MYSQL 触发更新后如果

MYSQL AFTER Trigger UPDATE IF

我想在用户更新后更新我的行。 例如,如果在用户选择 32 之后,之前输入的主体 > 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

想一想,您会意识到第一个问题:如果您在这里真正需要的是 AFTER 更新触发器...那么 BEFORE 更新触发器会做什么?

AFTER UPDATE表示更新查询已经改变了行数据。您实际要查找的是 BEFORE UPDATE——您想在中途劫持更新,在 table 数据实际更改之前,并可能修改将实际写入数据库的值.

UPDATE loans SET users_id = 40;

这有两个问题。首先,您知道没有 WHEREUPDATE 的作用...对吗?它更新 table 中的所有行。幸运的是,服务器不允许您这样做。但解决方案不是添加 WHERE 子句——而是这样的:

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

NEW 伪table 包含用户试图使 UPDATE(触发触发器)写入行的行数据。您处于 BEFORE UPDATE ... FOR EACH ROW 触发器中,因此设置 NEW 值会覆盖用户尝试执行的任何操作...这似乎是您想要完成的操作。