我在 Mysql 中使用了一个触发器,它将新插入的行插入到多个表中。触发器由几个 SELECT 组成。我注意到触发器仅在每个 SELECT 返回结果时才起作用。我知道 MySQL 不喜欢什么都不插入……但是,通常,最后记录的行不包含为触发器的每个 SELECT 返回结果的数据。在这种情况下,触发器无法运行。
例如,当我只使用返回某些内容的 SELECT 修改触发器时,所有 INSERT 都可以正常工作。
我想找到一种方法来告诉触发器不执行不返回结果的 SELECT 的 INSERT INTO。我该怎么办?
delimiter |
CREATE TRIGGER trigger_name AFTER INSERT
ON table1
FOR EACH ROW
BEGIN
INSERT INTO table3 (field3a, field3b)
SELECT field1A, field1B
FROM table1
WHERE table1.id = table2.id
AND table1.id IN (SELECT max(id) FROM table1);
INSERT INTO table4 (field4a, field4b)
SELECT field2A, field2B -- imagine this SELECT returns no row
FROM table2
WHERE table2.id = table1.id
AND table1.id IN (SELECT max(id) FROM table1);
END;
|
delimiter ;
谢谢!