mysql - 在 MYSQL 的 INSERT 期间创建触发器显示错误

标签 mysql sql triggers database-trigger

创建表:

CREATE TABLE Persons (
    ID int NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Birth_Date date,
    Review_Date date,
    PRIMARY KEY (ID)
);

在向该表中插入数据时,我想添加一个触发器,该触发器将更新 Review_Date 列的值为从出生日期算起 1 年。下面是我编写的触发器,它显示错误。

CREATE TRIGGER tri_Test_Insert_Trigger 
AFTER INSERT 
ON persons
FOR Each row
BEGIN
    UPDATE persons
    SET review_date = dateadd(year,1,birth_date)
END
GO 

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END GO' at line 8 0.000 sec

最佳答案

触发器中需要更新三件事:

一个。需要在 UPDATE sql
末尾添加 ; b.删除触发器末尾的 GO 并改用 DELIMITER
C。 dateadd需要改为date_add

 DELIMITER $$
    CREATE TRIGGER tri_Test_Insert_Trigger 
    AFTER INSERT 
    ON persons
    FOR Each row
    BEGIN
        UPDATE persons
        SET review_date = date_add(year,1,birth_date); -- add ; here
    END$$
  DELIMITER ; -- remove GO and use DELIMITER instead

关于mysql - 在 MYSQL 的 INSERT 期间创建触发器显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52566431/

相关文章:

SqlBulkCopy 无法尝试复制 XML 列中包含大量内容的行

sql - WHERE 子句中的可选参数

jquery - 当在输入字段中输入3个字符时用jquery触发事件

php - 将解析数据中的数组插入 MySQL

mysql - 在 SELECT 表中的其他位置使用子查询的别名

php - 从 MySQL 迁移到 MySQLi

php - 将textarea中的文本插入MySQL数据库而不丢失格式

sql - ADF LOOKUP 未更新所需的表

mysql - 选择触发器工作不正确

sql - 使用 Merge 语句到触发器中