Mysql 每行的触发器
嗨,伙计们,我想触发一下,如果一瓶啤酒的价格上涨超过1美元,那么我就把酒吧的名称添加到RIPOFFBAR表中Mysql 每行的触发器,mysql,triggers,Mysql,Triggers,嗨,伙计们,我想触发一下,如果一瓶啤酒的价格上涨超过1美元,那么我就把酒吧的名称添加到RIPOFFBAR表中 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语句开始每一行 但是
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\u time=AFTER”,则非常感谢您的帮助。根据mysql手册: 在BEFORE触发器中,如果您对其具有更新权限,还可以使用SET NEW.col_name=value更改其值。这意味着您可以使用触发器修改要插入新行或用于更新行的值<代码>(这样的SET语句在AFTER触发器中无效,因为行更改将已经发生。) 有关详细信息,请从此处查看手册: 我已经创建了两个表,插入数据并根据您的信息写入触发器: 创建表格:
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;$$
表1:create表seals(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);
update sells SET beer_price=8 where beer_name="Root Beer";
SELECT * FROM ripo_off_bar;
触发器:
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;$$
更新:
Insert into sells values("Root Beer", 2);
update sells SET beer_price=8 where beer_name="Root Beer";
SELECT * FROM ripo_off_bar;
之后,如果您查看ripo_off_酒吧表,您将看到添加了更新的啤酒名称信息!:
查看:
Insert into sells values("Root Beer", 2);
update sells SET beer_price=8 where beer_name="Root Beer";
SELECT * FROM ripo_off_bar;
我还添加了代码的截图。希望这些将帮助您完成任务。快乐编码