首页 > 解决方案 > MySQL停止插入基于字段值

问题描述

如果列具有特定值,我想做一个插入忽略。

假设我有一个简单的表,它记录了 PO 随时间的变化。每次更新 PO 时,我都需要在这张表上插入一条记录:

PONum | POLine | submittedBy   | ... other columns 
100     1        initial-value
100     1        TB
100     2        initial-value

在 PHP 页面上,我检查此表中是否存在 PO 编号。如果没有,我插入从另一个表中找到的所有采购订单行。我将提交的名称设置为“初始值”。

现在稍后,假设添加了 PO Line 3。我想再次检查我的检查,如果还没有第 3 行的初始值被提交的记录,则只插入第 3 行的新记录

INSERT IGNORE INTO PODetailCL (PONum, POLine, submittedBy, ... )
VALUES (100, 1, 'TB', ... ),
(100, 2, 'TB', ...),
(100, 3, 'initial-value', ...)

WHERE submittedBy <> 'initial-value' -- <- something like this but not sure of the syntax

标签: mysql

解决方案


尝试使用条件插入多行:

INSERT INTO PODetailCL(PONum, POLine, submittedBy, ... )
    SELECT (100, 1, 'TB', ... ), (100, 2, 'TB', ...),(100, 3, 'initial-value', ...)
        FROM PODetailCL
        WHERE EXISTS (SELECT * FROM PODetailCL WHERE submittedBy <> 'initial-value')

推荐阅读