我有两个表,tbl_PersonalInfo 和 tbl_User。我需要建立一个在 tbl_user 表更新之前调用的触发器。
触发器应检查更新语句中指定的 IdNum 是否已存在于 tbl_PersonalInfo 表中。如果存在,则更新应继续执行,否则更新不应继续执行
tbl_个人信息:
IdNum | FullName
0001 John Regan
tbl_用户:
UserId | IdNum | Username | Password
100 0001 admin admin
最佳答案
你可以做这样的事情(未经测试)
CREATE TRIGGER my_trigger BEFORE UPDATE ON tbl_user
FOR EACH ROW
BEGIN
IF NEW.IdNum NOT IN (SELECT T.IdNum From tbl_PersonalInfo T ) THEN
CALL `inexistent function to trigger an error and abord`;
END IF;
END;
如果您有 MySQL 5.5 或更高版本,您还可以引发一个可由您的应用程序捕获的错误。为此,请将 CALL
更改为
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'The IdNum doesnt exists in the PersonalInfo table';
关于mysql - 如何在更新执行之前创建触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52312152/