我在PHPMyAdmin上收到此错误
#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 '' at line 3
[编辑] 对不起,我之前没有把完整的东西放进去,我已经有了一个BEGIN和一个END,看看。
CREATE TRIGGER `accounts_insert` BEFORE INSERT ON `accounts`
FOR EACH ROW BEGIN
SET new.RegiDate = now();
SET new.UpdateDate = now();
END;
这是^^
行答案 0 :(得分:0)
如果您的触发器只有一条指令,则不需要begin
关键字:
create trigger `accounts_insert` before insert on `accounts`
for each row
set new.RegiDate = now();
如果您的触发器有多条指令,那么您需要:
begin...end
块示例:
delimiter $$
create trigger `accounts_insert_2` before insert on `accounts`
for each row
begin
set new.RegiDate = now();
set @newRows = coalesce(@newRows, 0) + 1; -- Just a dummy example
end; &&
delimiter ;
为什么delimiter $$
和delimiter ;
很重要?
当您编写查询时,MySQL假定它在找到第一个标准“指令终止符”(;
)的地方结束。由于您的触发器有多条指令,并且每条指令必须以;
结束,因此MySQL假定触发器定义已结束,并且(当然)无法执行它。那么,可以做些什么呢?只需在时间上重新定义标准指令终止符:
delimiter $$
现在,每条指令必须以$$
结束才能执行。定义触发器,并且当您想要结束定义时,使用新的临时指令终止符$$
,然后将终止符重新定义为正常;
:
delimiter ;
每次定义多个辅助触发器或存储过程或函数时,都必须 。