mysql - #1064-SQL语法错误,如何解决?

标签 mysql sql

当我创建一个TRIGGER时,我的数据库中有3个表[table_a,table_b,dataz],

CREATE TRIGGER trigz AFTER INSERT ON table_a
FOR EACH ROW
    IF EXISTS (SELECT * FROM table_b WHERE table_b.uid = '123') THEN
        INSERT INTO dataz
            VALUES('123');


ERROR

 #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 5


我不明白我在这里想念的是什么...

我正在使用WAMP Server 2.4,有人有解决方案吗?



编辑1(对于Nigel Ren)::

SQL:

CREATE TRIGGER trigz AFTER INSERT ON table_a FOR EACH ROW 
IF EXISTS (SELECT * FROM table_b WHERE table_b.uid = 1) THEN
    BEGIN
        INSERT INTO dataz(userid) VALUES('123');
    END;
END IF; 


错误:

#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 4 

最佳答案

这取决于编辑器识别语句结束的方式。通常它使用;,但是随着过程在各处使用;,您需要对其进行更改。所以像

DELIMITER $$

CREATE TRIGGER trigz AFTER INSERT ON Bin FOR EACH ROW 
begin
IF EXISTS (SELECT * FROM Bin WHERE binID = 1) THEN
        INSERT INTO log(text) VALUES('123');
END IF; 
end;
$$


编辑:
应该使用:

DELIMITER;


最后将定界符重置为正常。

关于mysql - #1064-SQL语法错误,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43611253/

相关文章:

sql - SQL 标准是否允许函数名和括号之间有空格

c# - 如何按多个字段分组并获取另一个字段的计数

javascript - PDO准备好的陈述是否足够

java - 更新 : could not execute statement, 时出现 Hibernate 错误 在 'index=1' 附近使用正确的语法

php - 如何创建语义搜索

mysql - 如何计算一列中不同数据的总值(value)

MYSQL中型查询优化与子查询

mysql - 如何为现有表列添加 Not NULL 约束?

php - 使用 PHP/MySQL 从多个列中选择最小值

mysql逐日选择日期