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查询,在应用程序级编码上执行操作,那么这可能会容易得多。