MySQL语句,建立触发器T1,往O表插入一条记录,若订单数量大于库存数量,则将订单数量修改为库存数量,同时删除g表相应gid的数据
时间: 2023-12-23 19:02:25 浏览: 126
利用SQL Server触发器实现表的历史修改痕迹记录
以下是可以用来建立触发器T1的MySQL语句:
```mysql
CREATE TRIGGER T1
AFTER INSERT ON O
FOR EACH ROW
BEGIN
DECLARE order_qty INT;
DECLARE stock_qty INT;
SELECT qty INTO order_qty FROM O WHERE id = NEW.id;
SELECT qty INTO stock_qty FROM G WHERE gid = NEW.gid;
IF order_qty > stock_qty THEN
UPDATE O SET qty = stock_qty WHERE id = NEW.id;
DELETE FROM G WHERE gid = NEW.gid;
END IF;
END;
```
这个触发器会在往O表插入一条记录后自动执行。对于每一条插入的记录,它会先查询O表中该订单的数量和G表中该商品的库存数量。如果订单数量大于库存数量,则会修改订单数量为库存数量,并且删除G表中相应gid的数据。注意,在这个触发器中,我们使用了NEW关键字来获取新插入的记录的值。同时,我们也使用了DECLARE语句来定义了两个变量order_qty和stock_qty,用于保存查询结果。
阅读全文