gpt4 book ai didi

mysql - 触发器中的多个查询

转载 作者:行者123 更新时间:2023-11-30 00:09:25 24 4
gpt4 key购买 nike

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

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 said: #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 'UPDATE enquiry SET status="Live-Enquiry" WHERE id IN ( SELECT enquiryID FROM cus' at line 5

如何在触发器内允许多个查询。我尝试过执行以下链接中的操作:Multiple insert/update statements inside trigger?

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

最佳答案

如果启用了 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;

关于mysql - 触发器中的多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24208885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com