MySQL插入查询如果条件匹配在插入触发器之后
Posted
技术标签:
【中文标题】MySQL插入查询如果条件匹配在插入触发器之后【英文标题】:MySQL insert query if condition matches in after insert trigger 【发布时间】:2016-07-13 19:16:00 【问题描述】:我正在使用带有 mysql 版本:5.7.9 和 phpMyAdmmin 版本:4.5.2 的 WampServer
我正在尝试在 Table1 上编写一个插入后触发器,以便在 Table2 中不存在数据时在 Table2 中插入数据。以下是我的查询:
DROP TRIGGER IF EXISTS `insert_customer`;
CREATE TRIGGER `insert_customer` AFTER INSERT ON `installations`
FOR EACH ROW BEGIN
IF (SELECT COUNT(*) FROM `customers` WHERE `customers`.`phone` = NEW.`phone`) = 0
THEN INSERT INTO `customers` (`phone`, `imei`, `platform`, `version_code`) VALUES (NEW.`phone`, NEW.`imei`, NEW.`platform`, NEW.`version_code`);
END IF;
END;
这给了我以下错误:
#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
我也尝试过使用分隔符:
DROP TRIGGER IF EXISTS `insert_customer`;
DELIMITER |
CREATE TRIGGER `insert_customer` AFTER INSERT ON `installations`
FOR EACH ROW BEGIN
IF (SELECT COUNT(*) FROM `customers` WHERE `customers`.`phone` = NEW.`phone`) = 0
THEN INSERT INTO `customers` (`phone`, `imei`, `platform`, `version_code`) VALUES (NEW.`phone`, NEW.`imei`, NEW.`platform`, NEW.`version_code`)
END IF;
END;
|
DELIMITER ;
这给了我以下错误:
#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 'END IF;
END' at line 5
我在这里做错了什么?有什么帮助吗?
【问题讨论】:
而他们给出的错误是......? 【参考方案1】:我的猜测是额外的分隔符;尝试改变
END;
|
到
END|
【讨论】:
即使在应用您的建议后仍然会遇到相同的错误。 :(【参考方案2】:我终于明白了。正确的 SQL 是:
DROP TRIGGER IF EXISTS `insert_customer`;
DELIMITER |
CREATE TRIGGER `insert_customer` AFTER INSERT ON `installations`
FOR EACH ROW BEGIN
IF (SELECT COUNT(*) FROM `customers` WHERE `customers`.`phone` = NEW.`phone`) = 0 THEN
INSERT INTO `customers` (`phone`, `imei`, `platform`, `version_code`) VALUES (NEW.`phone`, NEW.`imei`, NEW.`platform`, NEW.`version_code`);
END IF;
END;|
DELIMITER ;
;在我的 INSERT 查询结束时解决了我的问题。 :D
【讨论】:
以上是关于MySQL插入查询如果条件匹配在插入触发器之后的主要内容,如果未能解决你的问题,请参考以下文章