BEFORE INSERT触发器,忽略多次插入时的某些行

时间:2017-03-16 13:28:01

标签: mysql sql triggers mysql-5.7

给出表

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”。

那么,当使用多个/批量插入时,如何忽略某些行而不是全部?

1 个答案:

答案 0 :(得分:0)

如果您使用的是PHP,那么在将批量数据插入MySQL之前,请先清理数据。否则,使用触发器只允许您插入全部或全部。