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

问题描述 投票:0回答:1

我有两个表,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
mysql triggers
1个回答
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';
© www.soinside.com 2019 - 2024. All rights reserved.