当我创建一个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/