#1064 - SQL语法错误,如何解决?
我有3个表[表-A,表-B,DATAZ]在我的数据库,当我创建一个TRIGGER
如下,#1064 - SQL语法错误,如何解决?
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
,有人有解决办法吗?
EDIT 1(奈杰尔仁)::
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
这是下跌的方式来编辑承认结束的声明。通常它使用a;,但是随着程序的使用;到处都是,你需要改变它。因此,像
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;
末定界符重新恢复正常。
ERROR为'#1064 - 您的错误在您的SQL语法;查看与您的MySQL服务器版本对应的手册,在第7行'$$'附近使用正确的语法。 –
我的查询为DELIMITER $$ CREATE TRIGGER trigz AFTER INSERT ON table_a FOR EACH ROW begin IF EXISTS SELECT * FROM table_b WHERE table_b.uid ='123')THEN INSERT INTO dataz(userid)VALUES('123'); END IF; 结束; $$'' –
你是如何运行这个的 - 你必须运行整个事情,包括DELIMITER命令。 –
您能否提供表格结构? –
这么多不好看。 。 。没有'DELIMITER','BEGIN','END IF'。 。 。 –
@GordonLinoff当我删除IF IF EXISTS(SELECT * FROM table_b WHERE table_b.uid ='123')THEN'这部分,它工作正常 –