Mysql 触发器中的多个查询

Mysql 触发器中的多个查询,mysql,sql,database,phpmyadmin,triggers,Mysql,Sql,Database,Phpmyadmin,Triggers,我对使用触发器相当陌生,有一个小问题。 我有一个触发器,用于在新插入的查询和客户表之间查找匹配项 INSERT INTO customersmatched (customerID,enquiryID) SELECT id, NEW.id FROM customer AS c WHERE c.customerName=NEW.companyName HAVING COUNT(id)=1; 然后,我需要更新新插入的查询,使其具有显示匹配的状态,但仅当其已匹配时。所以我试着在插入后添加这一行 UPD

我对使用触发器相当陌生,有一个小问题。 我有一个触发器,用于在新插入的查询和客户表之间查找匹配项

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服务器版本相对应的手册 使用near“更新查询集状态=实时查询,其中id 在第5行的“从客户处选择查询ID”

如何在触发器中允许多个查询。我在这个链接中尝试过这样做:


但也不起作用。顺便说一句,我正在使用phpmyadmin。有人能帮忙吗D

如果启用了ansi引号,则不能将双引号用作字符串文字,而需要使用单引号。请看:否则,我看不到任何语法错误跳出我

尝试将设置状态=实时查询更改为设置状态=“实时查询”

编辑:

第一个查询的目的是什么?我不确定您是否需要在该查询中使用。如果想要一个不同的匹配列表,只需使用distinct

如果我理解正确,第二个问题可以简化为:

UPDATE enquiry 
SET status='Live-Enquiry' 
WHERE id = NEW.id;

嘿,谢谢你的帮助。它似乎不是引号:/have在那里,因为偶尔会有多个匹配项,我们只希望有一个匹配项的匹配项。更新更加复杂,因为我们需要插入成功才能更新。为你的帮助干杯@abrosis我假设你在OP中提供的链接中尝试了公认的答案,该链接说你需要使用BEGIN。。。在触发器中使用多个语句时结束块?
UPDATE enquiry 
SET status='Live-Enquiry' 
WHERE id = NEW.id;