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

时间:2018-09-13 10:51:11

标签: mysql triggers

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

1 个答案:

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