Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在插入触发器之前,在多次插入时忽略某些行_Mysql_Sql_Triggers_Mysql 5.7 - Fatal编程技术网

Mysql 在插入触发器之前,在多次插入时忽略某些行

Mysql 在插入触发器之前,在多次插入时忽略某些行,mysql,sql,triggers,mysql-5.7,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 in

给定表

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; $$
我可以使用
信号sqlstate'45000'
但问题是,当我使用多插入语法时:

insert into testtab
values
(55),
(4)
触发器忽略所有行,但我只需要忽略“55”,然后插入“4”


那么,在使用multiple/bulk insert时,如何忽略某些行而不是全部行呢?

如果您使用的是PHP,那么在将bulk插入MySQL之前,先清理其中的数据。否则,使用触发器只允许插入全部或不插入任何内容。

1。2.我不认为触发器真的可以做到这一点,即忽略一项并插入另一项,除非您用信号引发错误。如果您通过检查输入值,然后生成insert查询,在应用程序级编码上执行操作,那么这可能会容易得多。