尽管我正在使用mysql“ insert ignore”语句
在称为软件的表中插入一行
我想确保我不会插入表中已经存在的软件。
我的表叫做软件,我想插入
此表有新软件,但如果已经
存在于表格中,我想跳过插入
我的桌子看起来像这样:
+----+-----------+
| id | name |
+----+-----------+
| 1 | software1 |
| 2 | software2|
| 3 | software3 |
| 4 | software4 |
| |
+----+-----------+
我使用了“插入忽略”,但仍会创建重复的键
MariaDB [db]> insert ignore into software values (5,'software4');
现在我可以看到有一个重复的software4密钥
+----+-----------+
| id | name |
+----+-----------+
| 1 | software1 |
| 2 | software2|
| 3 | software3 |
| 4 | software4 |
| 5 software4
+----+-----------+
尽管我可以在这里看到类似的问题:
mysql insert only if not exists doesn't work
我是mysql新手,对我没有帮助
答案 0 :(得分:1)
检查:BeaconScope “通过使用IGNORE关键字,所有错误都将转换为警告,这不会停止插入其他行。”
如果您不想在名称中包含重复的条目,请使其具有唯一性:
创建表t1(x int UNIQUE);
答案 1 :(得分:1)
首先将name
列设为唯一,以便确保没有重复的条目:
ALTER TABLE software ADD UNIQUE (name);
然后使用INSERT IGNORE...
,它将仅在INSERT
不存在的情况下使用
答案 2 :(得分:0)
INSERT INTO software (id, name)
SELECT 4, 'software4'
FROM software
WHERE NOT EXISTS(
SELECT 1 FROM software WHERE name = 'software4'
) LIMIT 1;
仅当名称不存在时,这才插入记录。