Mysql在重复键上插入,而last_insert_id不起作用

时间:2011-03-15 18:49:24

标签: mysql

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)

解决问题。

2 个答案:

答案 0 :(得分:1)

仅当列具有ON DUPLICATE时才会触发UNIQUE KEY。尝试在ab列的表格上添加一个独特的索引,它应该按预期工作。

答案 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