嗨,伙计们,我想扣一个扳机,如果啤酒的价格涨了超过1美元,我就把酒吧的名字加在吧台上。
CREATE TRIGGER PriceTrig
AFTER UPDATE ON Sells
FOR EACH ROW
BEGIN
IF (NEW.price > OLD.price + 1.00)
THEN
INSERT INTO RipoffBars(bar)
VALUES(NEW.bar);
END IF;
END;
如您所见,我用IF语句开始每一行
但由于某些原因,它不起作用任何帮助将是非常感激的
最佳答案
您犯的第一个错误是在尝试更新行时使用“trigger_time=AFTER”。根据mysql手册:
在BEFORE触发器中,如果您对其具有更新权限,还可以使用SET NEW.col_name=value更改其值。这意味着您可以使用触发器修改要插入新行或用于更新行的值。(Such a SET statement has no effect in an AFTER trigger because the row change will have already occurred.)
有关详细信息,请从此处查看手册:
http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html
我已经创建了两个表,插入数据并根据您的信息编写触发器:
创建表:
表1:create table sells (beer_name varchar(200),beer_price int(20));
表2:create table ripo_off_bar (beer_name varchar(200));
插入:
Insert into sells values("Root Beer", 2);
触发:
DELIMITER $$
CREATE TRIGGER price_update BEFORE UPDATE ON sells
FOR EACH ROW
BEGIN
IF(NEW.beer_price > OLD.beer_price + 1) THEN
INSERT INTO ripo_off_bar (beer_name) VALUES (NEW.beer_name);
END IF;
END;$$
更新:
update sells SET beer_price=8 where beer_name="Root Beer";
在那之后,如果你看到里普酒吧外的桌子,你会看到已经添加了你最新的啤酒名称信息!:
视图:
SELECT * FROM ripo_off_bar;
我还添加了代码的屏幕截图。希望这些能帮助你完成任务。快乐编码!!!
关于mysql - 触发每行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15532064/