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

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

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

最佳答案

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

关于mysql - BEFORE INSERT 触发器,在多次插入时忽略某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42835467/

相关文章:

mysql - 触发 MySQL 不工作

php - PHP 的动态数组

mysql - SQL 选择特定日期和附加字段过滤器之间的数据

mysql - 通过获取第一个数字字符之前的所有字符来选择 MySQL 中的邮政编码区域

ruby-on-rails - 如何在 rails 中测试各种测试用例的 postgres 触发器功能?

postgresql - 在 hsqldb 上运行触发的 postgresql 函数

mysql - 在 mysql 中声明是否给出语法错误?

php - 如何在div中回显php变量

mysql - 按两个日期列对 View 进行排序并添加排名列

mysql - 如何计数和回显值