我有两个表,tbl_PersonalInfo和tbl_User。我需要建立在对tbl_user表进行更新之前要调用的触发器。
触发器应检查tbl_PersonalInfo表中是否存在更新语句中指定的IdNum。如果存在,则更新应继续执行,否则,更新不应继续执行
tbl_PersonalInfo:
IdNum | FullName
0001 John Regan
tbl_User:
UserId | IdNum | Username | Password
100 0001 admin admin
答案 0 :(得分:0)
您可以执行以下操作(未经测试)
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';