给定表格
CREATE TABLE testtab(
col int
)
我需要检查插入的值,如果值满足条件,则忽略这些行。所以,触发器看起来像这样:
DELIMITER $$
CREATE TRIGGER check_rows BEFORE INSERT ON testtab
FOR EACH ROW
BEGIN
IF new.col > 7 THEN
-- here need ignore that row and do not insert
END IF;
END; $$
我可以使用signal sqlstate '45000'
,但问题是当我使用多个插入语法时:
insert into testtab
values
(55),
(4)
触发器忽略所有行,但我只需要忽略“55”,并插入“4”。
那么,当使用多个/批量插入时,如何忽略某些行而不是全部?
最佳答案
如果您使用 PHP,那么在将大量数据插入 MySQL 之前先清理其中的数据。否则,使用触发器只会允许您插入全部或不插入任何内容。
关于mysql - BEFORE INSERT 触发器,在多次插入时忽略某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42835467/