MYSQL AFTER触发UPDATE IF

时间:2015-06-19 18:34:06

标签: mysql triggers

我希望在用户更新后更新我的行。 例如,如果用户选择32,并且之前输入的Principal是> 1000.然后更新32到40。

CREATE TRIGGER updateusers_id AFTER UPDATE ON Table
FOR EACH ROW
BEGIN       

IF(NEW.users_id = 32 AND Table.Principal > 50000) THEN
UPDATE loans SET users_id = 40;
END IF;

END

1 个答案:

答案 0 :(得分:1)

考虑一下,你会意识到第一个问题:如果你真正需要的是AFTER更新触发器...那么BEFORE更新触发器会做什么?

更新查询已更改行数据后,

AFTER UPDATE表示。您实际需要的是BEFORE UPDATE - 您希望在表数据实际更改之前在流中段劫持更新,并可能修改实际写入数据库的值。

UPDATE loans SET users_id = 40;

这有两个问题。首先,你知道没有UPDATE的{​​{1}}是什么......对吗?它会更新表中的所有行。幸运的是,服务器并没有让你这样做。但解决方案不是添加WHERE条款 - 它是这样的:

WHERE

IF(NEW.users_id = 32 AND NEW.Principal > 50000) THEN SET NEW.users_id = 40; END IF; pseudotable包含用户尝试使NEW(触发触发器)写入行的行数据。您处于UPDATE触发器中,因此设置BEFORE UPDATE ... FOR EACH ROW值会覆盖用户尝试执行的操作...这似乎是您想要完成的任务。