我在MySQL表中批量插入可变数量的行:
INSERT INTO table (col1, col2) VALUES (0,0), (0,1), ..., (0,N)
第一列始终相同,第二列在每个条目中都会更改。现在我想实现一个使用col1
来更新另一个表的MySQL触发器。 E.g。
DELIMITER //
CREATE TRIGGER updateOtherTable AFTER INSERT ON table
FOR EACH ROW BEGIN
CALL someProcedure(NEW.col1);
END;
//
但是,这将执行someProcedure()
N
次,这是不必要的,因为col1
对于每个INSERT
始终是相同的。
是否可以只调用一次此触发器,如果是,如何调用?
答案 0 :(得分:0)
我认为你不能阻止每一行执行触发器。
一种选择是使用9.4. User-Defined Variables(小心用户定义的变量)来控制是否调用存储过程。
类似的东西:
DELIMITER //
CREATE TRIGGER `updateOtherTable` AFTER INSERT ON `table`
FOR EACH ROW
BEGIN
IF @`callSomeProcedure` THEN
SET @`callSomeProcedure` := NULL;
CALL `someProcedure`(NEW.`col1`);
END IF;
END//
DELIMITER ;