gpt4 book ai didi

mysql - #1064 - 您的 SQL 语法有误; , SAMP MYSQL 错误

转载 作者:行者123 更新时间:2023-11-30 23:05:51 25 4
gpt4 key购买 nike

我在 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;

这是一行^^

最佳答案

如果你的触发器只有一条指令,你不需要begin关键字:

create trigger `accounts_insert` before insert on `accounts`
for each row
set new.RegiDate = now();

如果您的触发器有多个指令,那么您需要:

  1. 更改默认分隔符
  2. 将触发指令包含在 begin...end block 中
  3. 恢复默认分隔符

例子:

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 ;

每次定义多指令触发器或存储过程或函数时,必须完成此操作。

关于mysql - #1064 - 您的 SQL 语法有误; , SAMP MYSQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com