MariaDB:引用旧行中的语法错误

时间:2016-10-16 13:22:24

标签: sql triggers mariadb

我试图执行MariaDB's Trigger examples中找到的非常基本的触发器:

CREATE TRIGGER Books_Delete
AFTER DELETE ON Books                 /* See note (a) */
  REFERENCING OLD ROW AS Old         /* See note (b) */
FOR EACH ROW                          /* See note (c) */
  INSERT INTO Books_Deleted_Log
      VALUES (Old.title);             /* See note (d) */

这不起作用,因为我在第3行的查询中出现了语法错误:REFERENCING OLD ROW ...。一般来说,我无法运行我为MariaDB或MySQL找到的任何示例。那么这里有什么问题?我读到REFERENCING - 部分没有必要,但没有它也不会工作。我做的任何触发器查询都是SQL语法错误。这可能与将DBeaver用作SQL客户端有关吗?

1 个答案:

答案 0 :(得分:1)

我希望触发器看起来像这样:

DELIMITER $$

CREATE TRIGGER Books_Delete
AFTER DELETE ON Books
FOR EACH ROW 
BEGIN                         /* See note (c) */
    INSERT INTO Books_Deleted_Log(title)
        VALUES (Old.title); 
END;$$

DELIMITER ;

REFERENCING不是MySQL语法的一部分,但是是MariaDB语法的一部分。