我有两个表,tbl_PersonalInfo和tbl_User。我需要建立一个在tbl_user表上进行更新之前调用的触发器。
触发器应检查更新语句中指定的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';