MySQL批量插入后触发器

3

我需要在MySQL表中批量插入不定数量的行:

INSERT INTO table (col1, col2) VALUES (0,0), (0,1), ..., (0,N)

第一列始终相同,每个条目中第二列会有变化。现在我想要实现一个MySQL触发器,使用col1来更新另一个表格。例如:

DELIMITER //

CREATE TRIGGER updateOtherTable AFTER INSERT ON table
  FOR EACH ROW BEGIN
    CALL someProcedure(NEW.col1);
  END;
//

然而,这将执行someProcedure() N次,这是不必要的,因为每个INSERTcol1总是相同的。 是否可能仅调用此触发器一次?如果可以,如何实现?
1个回答

1
我认为你无法阻止每行触发器的执行。
一种选择是使用9.4. 用户定义变量(小心用户定义变量),该变量控制是否调用存储过程。
类似这样的内容:
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 ;

SQL Fiddle example

的英文意思是:a SQL Fiddle example link1 enclosed in a keyboard input tag, with HTML formatting preserved.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接