![](/img/trans.png)
[英]Update column automatically based on value of another column (same table) in Laravel (7)
[英]Update another column during a update query based on its new value
设置item_quantity后,可以执行请求的更新。 然后,您可以像这样直接比较item_quantity:
UPDATE `item_quantity`
SET
`quantity`= `quantity` - 5
,`requested`= IF(`quantity` = 0, 0, `requested`);
样品
mysql> SELECT * FROM item_quantity;
+----+----------+-----------+
| id | quantity | requested |
+----+----------+-----------+
| 1 | 10 | 9 |
+----+----------+-----------+
1 row in set (0,00 sec)
mysql> UPDATE `item_quantity`
-> SET
-> `quantity`= `quantity` - 5
-> ,`requested`= IF(`quantity` = 0, 0, `requested`);
Query OK, 1 row affected (0,00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM item_quantity;
+----+----------+-----------+
| id | quantity | requested |
+----+----------+-----------+
| 1 | 5 | 9 |
+----+----------+-----------+
1 row in set (0,00 sec)
mysql> UPDATE `item_quantity`
-> SET
-> `quantity`= `quantity` - 5
-> ,`requested`= IF(`quantity` = 0, 0, `requested`);
Query OK, 1 row affected (0,00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM item_quantity;
+----+----------+-----------+
| id | quantity | requested |
+----+----------+-----------+
| 1 | 0 | 0 |
+----+----------+-----------+
1 row in set (0,00 sec)
mysql>
您可以使用BEFORE UPDATE
触发器。 该触发器将在更新执行之前触发,您可以更新其他字段。 请尝试以下操作:
CREATE TRIGGER item_quantity_before_update
BEFORE UPDATE
ON item_quantity FOR EACH ROW
BEGIN
DECLARE old_quantity NUMBER;
DECLARE new_quantity NUMBER;
SELECT quantity INTO old_quantity;
SET new_quantity = old_quantity - 5;
IF new_quantity == 0 THEN
SET new.requested = 0
ELSE
SET new.requested = 1;
END IF;
END; //
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.