如何创建插入前触发器

时间:2019-10-31 01:17:35

标签: mysql

我正在尝试创建一个BEFORE INSERT触发器,并得到我不理解的错误。

用于创建触发器的MySQL如下所示:

CREATE  TRIGGER `GetPolyLinkID` BEFORE INSERT ON `TableA` 
FOR EACH ROW 
BEGIN
    INSERT INTO TableB () VALUES ();
    NEW.PolyLinkID = last_insert_id();
END

我得到的错误是

  

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ END”附近使用

1 个答案:

答案 0 :(得分:1)

您忘记了SET ...成为了NEW.PolyLinkID = last_insert_id();

还有

要创建复杂的触发器,必须使用delimiter关键字。

这是来自https://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html的示例。

delimiter //
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
   IF NEW.amount < 0 THEN
       SET NEW.amount = 0;
   ELSEIF NEW.amount > 100 THEN
        SET NEW.amount = 100;
   END IF;
END;
//
delimiter ;

续集pro的屏幕截图

example with SEQUEL PRO