MySQL删除触发器中的语法错误

时间:2013-04-27 05:47:35

标签: mysql sql database database-design

帮助MySQL触发器? 我试图在我的SQL中创建一个删除插入触发器...我到目前为止:

CREATE
[DEFINER = {user| CURRENT_USER }]
TRIGGER ProjectDoneTrigger After Delete
ON Project FOR EACH ROW insert into projectover values(old.projectID,old.name,
old.Department,old.MaxHours, old.StartDate,
old.EndDate);

然而,MySQL在第一行报告语法错误[第2行...这条线的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

详细阅读MySQL参考手册,特别是Typographical and Syntax Conventions部分(从行开始,在语法描述中,方括号(“[”和“]”)表示可选的单词或从句。)。请参阅参考手册,您需要在代码的第二行中找到哪些部分。您可以将代码更改为(假设您需要TRIGGER语句默认值):

CREATE TRIGGER ProjectDoneTrigger AFTER DELETE ON Project 
FOR EACH ROW
INSERT INTO projectover 
VALUES (old.projectID,old.name, old.Department,old.MaxHours, 
old.StartDate, old.EndDate);

有关TRIGGER语法的更多信息,请查看参考手册的Using Triggers部分。

答案 1 :(得分:0)

  

Brackets表示其中包含的内容是可选的 - 无论是什么,命令都不需要运行,但可能是您想要使用的内容,具体取决于您使用该命令的内容。 从不按字面意思使用括号,因此在执行命令时不要包括它们。

DEFINER部分仅在您想要在触发激活时检查访问权限时指定要使用的MySQL帐户时才有用。我会说这是一个高级主题,除非你知道你需要它,否则应该被排除在外。

如果想更详细地了解DEFINER所做的事情,可以在CREATE TRIGGER manual中找到。