当您尝试更新行时,您犯的第一个错误是使用“ trigger_time = AFTER ” 。根据mysql手册:
在 BEFORE 触发器中,如果您具有 UPDATE 权限,您还可以使用 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";
之后,如果您查看ripo_off_bar 表,您将看到已添加更新的 beer_name 信息!:
看法 :
SELECT * FROM ripo_off_bar;
我还添加了编码的屏幕截图。希望这些能帮助您完成任务。编码快乐!!!