你应该先创建一个 UNIQUE INDEX 在“代码”列上。然后,您可以使用以下方法安全地插入数据而不发出警告:
INSERT INTO LICENSE_TABLE(code, license_type, distributor)
SELECT 'uniquecode', 'standard', 'walmart'
FROM (SELECT 1) AS x
WHERE NOT EXISTS (
SELECT 1
FROM LICENSE_TABLE
WHERE code = 'uniquecode'
)
3条答案
按热度按时间jdzmm42g1#
只是使用
INSERT IGNORE
喜欢但是你需要在页面上有一个唯一的索引
code
列。检查你是否已经有一个show indexes from LICENSE_TABLE;
或者show create table LICENSE_TABLE;
如果没有,可以这样创建:j9per5c42#
你应该先创建一个
UNIQUE INDEX
在“代码”列上。然后,您可以使用以下方法安全地插入数据而不发出警告:zbsbpyhn3#
最好的方法是
on duplicate key update
:首先,您需要一个唯一的索引,以便数据库保持数据的完整性。
第二:
这比一个
WHERE
子查询EXISTS
因为它是线程安全的。这意味着不同线程中的多个更新永远不会导致问题。这比
INSERT IGNORE
因为INSERT IGNORE
将忽略其他错误。ON DUPLICATE KEY UPDATE
做你想做的事。