如何创建删除后触发器

Posted

技术标签:

【中文标题】如何创建删除后触发器【英文标题】:How to create an after delete trigger 【发布时间】:2021-05-11 01:52:23 【问题描述】:

我正在尝试在教授表上创建一个 AFTER DELETE 触发器,当 ProfessorName/Program 被删除时,它会将删除的内容插入到表professor_audit_trail 中

    CREATE TRIGGER trg_Delprofessor 
    ON `lab7`.`professor` 
    AFTER DELETE AS 
    BEGIN 
    INSERT INTO professor_audit_trail 
    SELECT `professor`.`ProfessorName`, `professor`.`ProfessorProgram` 
    FROM Deleted 
    end;

表:professor

列:

ProfessorName
ProfessorProgram

表:professor_audit_trail

它会在您的语法中输出 1064 错误

【问题讨论】:

请在问题中添加整个错误消息输出。 请提供清楚的错误信息 【参考方案1】:

mysql 上创建触发器的语法可能与其他 sql 服务器不同。 正确的语法应该是:

delimiter $$
CREATE TRIGGER `trg_Delprofessor` 
AFTER DELETE ON `lab7`.`professor` FOR EACH ROW 
BEGIN 
    INSERT INTO professor_audit_trail(`ProfessorName`, `ProfessorProgram`) 
    values (old.ProfessorName, old.ProfessorProgram);
END $$
delimiter ;

欲了解更多信息MySQL TRIGGER SYNTAX

【讨论】:

单语句触发器不需要在 BEGIN-END 和分隔符重新分配。

以上是关于如何创建删除后触发器的主要内容,如果未能解决你的问题,请参考以下文章

SQLServer之创建AFETER DELETE触发器

插入触发器后删除

MySQL如何创建每天0点自动运行的触发器?

MySQL如何创建每天0点自动运行的触发器?

插入或删除后的 Oracle 触发器

MySql 触发器的新增修改删除的创建