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

标签 mysql triggers

我有两个表,tbl_PersonalInfo 和 tbl_User。我需要建立一个在 tbl_user 表更新之前调用的触发器。

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

tbl_个人信息:

  IdNum | FullName
  0001    John Regan

tbl_用户:

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

关于mysql - 如何在更新执行之前创建触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52312152/

相关文章:

sql-server - ADOQuery 正在绕过而不是删除触发器

mysql - 将触发器从一个表移动到另一个表存在语法问题

mysql - SQL 选择并连接所有行的值

MySQL 日期 -> 进入 EuroDate

c# - 使用 SMO 或 Linq 的 SQL Server CLR 触发器?

sql - 触发器如何在单个事务中插入多行时触发

javascript - 为 'on form submit' 触发器指定表单

mysql - MySQL中如何根据唯一ID的多个结果选择一条MAX记录

mysql - MAMP 错误 : checking MySQL databases failed

java - 在 JEE 中 24 小时后从 MySQL 中删除一行?