我在我的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编辑对不起,我没有把整个东西放在前面,我已经有了一个开始和一个结束,看。
CREATE TRIGGER `accounts_insert` BEFORE INSERT ON `accounts`
FOR EACH ROW BEGIN
SET new.RegiDate = now();
SET new.UpdateDate = now();
END;这是这行^^
发布于 2014-02-22 07:54:12
如果触发器只有一条指令,则不需要begin关键字:
create trigger `accounts_insert` before insert on `accounts`
for each row
set new.RegiDate = now();如果触发器有多条指令,则需要:
Change the default delimiter
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 ; 和delimiter ;很重要?
当您编写查询时,MySQL假定它在找到第一个标准“指令终止符”(;)的地方结束。由于您的触发器有多条指令,并且每条指令都必须以;结尾,因此MySQL假定触发器定义已经结束,(当然)无法执行它。那么,我们能做什么呢?只需在时间上重新定义标准指令终止符:
delimiter $$现在,每条指令都必须以$$结尾才能执行。定义触发器,如果要结束定义,请使用新的临时指令终止符$$,然后将终止符重新定义为普通的;
delimiter ;每次定义多结构触发器或存储过程或函数时,都必须执行此操作。
https://stackoverflow.com/questions/21947476
复制相似问题