如何在更新执行前创建触发器?



我有两个表,tbl_PersonalInfoand tbl_User。我需要建立一个触发器,该触发器在对tbl_user表进行更新之前调用。

触发器应检查 update 语句中指定的 IdNum 是否已存在于tbl_PersonalInfo表中。如果存在,则更新应继续执行,否则,更新不应继续执行

tbl_PersonalInfo:

IdNum | FullName
0001    John Regan

tbl_User:

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';

最新更新