我使用触发器相当新,并且有一个小问题。 我有一个触发器在新插入的查询和客户表之间找到匹配。
INSERT INTO customersmatched (customerID,enquiryID) SELECT id, NEW.id FROM customer AS c WHERE c.customerName=NEW.companyName HAVING COUNT(id)=1;
然后我需要更新新插入的查询,以便它具有显示匹配的状态(但仅当它已匹配时)。所以我尝试在插入后添加这一行。
UPDATE enquiry SET status="Live-Enquiry" WHERE id IN ( SELECT enquiryID FROM customersmatched WHERE enquiryID = NEW.id);
除非我收到此错误:
MySQL说:#1064 - 你的SQL语法有错误;检查 手册,对应于>右侧的MySQL服务器版本 语法使用近< UPDATE查询SET状态="实时查询"在哪里id IN(选择enquiryID FROM cus'第5行
如何在触发器中允许多个查询。我尝试过这样的链接:Multiple insert/update statements inside trigger?
但也不起作用。我使用phpmyadmin btw。有人可以帮忙吗? :d
答案 0 :(得分:0)
如果您启用了ansi引号,那么您不能使用双引号作为字符串文字,而是需要使用单引号。请参阅:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi_quotes否则,我看不到任何语法错误。
尝试将SET status="Live-Enquiry"
更改为SET status='Live-Enquiry'
编辑:
第一个查询的目的是什么?我不确定您在该查询中是否需要HAVING
。如果想要一个不同的匹配列表,只需使用DISTINCT
INSERT INTO customersmatched (customerID,enquiryID)
SELECT DISTINCT id, NEW.id
FROM customer AS c
WHERE c.customerName=NEW.companyName;
第二个查询,如果我理解正确的话,可以简化为:
UPDATE enquiry
SET status='Live-Enquiry'
WHERE id = NEW.id;