我有两个表,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';