create table test1 (
id int not null auto_increment primary key,
a varchar(16), b varchar(16)
);
INSERT INTO test1 (a,b) VALUES ('a1','b3') ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), b='3';
由于表格为空,上面的行应插入一个条目。
INSERT INTO test1 (a,b) VALUES ('a1','b3') ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), b='3';
再次运行该行,它应该b
替换为"3"
,因为a1, b3
已经存在。但是mysql为我添加了另一条线。我搜索了一段时间,找不到解决方案。
最新更新:感谢您的所有帮助。我认为其中一列必须是唯一的。
更改表test1添加唯一(a)
解决问题。
答案 0 :(得分:1)
仅当列具有ON DUPLICATE
时才会触发UNIQUE KEY
。尝试在a
或b
列的表格上添加一个独特的索引,它应该按预期工作。
答案 1 :(得分:1)
您的案例中没有重复的密钥。表格中只有唯一列为primary key id
尝试
INSERT INTO test1 (id,a,b) VALUES (1,'a1','b3') ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), b='3';
两次。 第一行文件说。
If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, an UPDATE of the old row is performed.
查看完整的documentation。