【问题标题】:#1064 - You have an error in your SQL syntax when create trigger#1064 - 创建触发器时 SQL 语法有错误
【发布时间】:2023-03-26 16:56:02
【问题描述】:

我在创建插入后触发器时遇到了这个问题。我知道这是一个语法错误,但我不知道如何在我的 SQL 中修复它。

1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取在第 5 行的 '' 附近使用的正确语法

这是我的触发器:

CREATE TRIGGER insert_to_student_table
AFTER INSERT ON user
FOR EACH ROW 
BEGIN
DECLARE v_UserID INTEGER;
SET @v_UserID := (Select Max(UserID) from user where Type="Student");
INSERT INTO student (StudentID,TutorID)VALUES (v_UserID, NULL);
END

【问题讨论】:

  • 我认为它的'DECLARE @v_UserID INTEGER;'你也错过了插入中的“@”。

标签: mysql


【解决方案1】:

你需要有一个delimiter

delimiter //

CREATE TRIGGER insert_to_student_table
AFTER INSERT ON user
FOR EACH ROW 
BEGIN
DECLARE v_UserID INTEGER;
SET v_UserID = (Select Max(UserID) from user where Type="Student");
INSERT INTO student (StudentID,TutorID)VALUES (v_UserID, NULL);
END;//

delimiter ;

【讨论】:

  • 感谢您的回答,但尝试此操作后我仍然遇到相同的错误。 :(
  • 您是在 CLI 还是在其他一些工具上运行此触发器。
  • 在 PHP myadmin 中,您可以选择设置分隔符,检查该部分并设置分隔符,然后从上面的代码中删除分隔符,它应该可以工作。
  • 感谢您的回答,在我删除 Phpmyadmin 中的分隔符检查后它立即起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多