我在Mysql中使用触发器将新插入的行插入到多个表中。触发器由多个SELECT组成。我注意到只有当每个SELECT返回一个结果时,触发器才起作用。我明白,MySQL不喜欢插入任何东西......但是,最后记录的行通常不包含数据,以便为触发器的每个SELECT返回一个结果。在这种情况下,触发器无法运行。
例如,当我修改触发器只有返回的东西,然后所有的插入工作正常。
我想找到一种方法来告诉触发器不执行返回没有结果的SELECT的INSERT INTO。我怎么办?
触发器: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 ;
谢谢!
感谢您的帮助!但是,我注意到我的情况下肯定会得到EXISTS查询。触发条件是每个INSERT ON table1。我怎么能把它变成一个SELECT查询?我不明白,对不起。 – RemiC