获得DUPLICATE KEY错误后的主键?
问题描述:
如果我运行插入查询,但由于重复键错误而失败,有没有办法获得其主键而不做另一个选择?获得DUPLICATE KEY错误后的主键?
基本上:
INSERT INTO tbl (field) VALUES ('myvalue')
此失败,因为已经存在与ID的记录:1个字段:myvalue的。
现在我想知道ID:1没有做另一个查询:
SELECT id FROM tbl WHERE field = 'myvalue'
是它不可能性?
答
这里是一个提供了四种不同的方式来处理这个链接插入重复: http://mikefenwick.com/blog/insert-into-database-or-return-id-of-duplicate-row-in-mysql/
答
每个库都有一个规定来获取插入的行的id。
一样:简单mysql_query()
使用mysql_insert_id()
后以检索最后插入的行的id
编辑:
请检查,如果您已经定义了唯一索引field
列。
如果是的话,那么你不能在列field
你怎么了'ID:1'价值?它是默认值吗?你不应该有'AUTO_INCREMENT'吗? – Halcyon 2012-04-21 15:14:39
您可能过多地匿名了SQL。我没有看到第一个查询会如何导致主键错误,除非'field'(而不是'id')是被键入的字段。 – 2012-04-21 15:15:25
字段是唯一的,当然是像ID:X – dynamic 2012-04-21 15:22:14