我有以下查询:
INSERT INTO LICENSE_TABLE
(code, license_type, distributor)
values ("uniquecode", "standard", "walmart")
只有当不存在已经具有 code="uniquecode"
我该怎么做?
我找到了一些涉及 INSERT IGNORE
的解决方案,一些关于 DUAL
的解决方案,还有一些,但我不明白哪个适用于我的情况。
如果重要的话,我正在使用 pymysql
。
最佳答案
最好的方法是使用 on duplicate key update
:
首先,您需要一个唯一索引,以便数据库保持数据的完整性。
第二个:
INSERT INTO LICENSE_TABLE (code, license_type, distributor)
VALUES ('uniquecode', 'standard', 'walmart')
ON DUPLICATE KEY UPDATE code = VALUES(code);
这比带有 EXISTS
的 WHERE
子查询要好,因为它是线程安全的。这意味着不同线程中的多个更新永远不会导致问题。
这比 INSERT IGNORE
更好,因为 INSERT IGNORE
会忽略其他错误。 ON DUPLICATE KEY UPDATE
完全符合您的要求。
关于mysql - 如果表中不存在列值,则将行插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52290872/