2012-04-21 46 views
3

如果我运行插入查询,但由于重复键错误而失败,有没有办法获得其主键而不做另一个选择?获得DUPLICATE KEY错误后的主键?

基本上:

INSERT INTO tbl (field) VALUES ('myvalue') 

此失败,因为已经存在与ID的记录:1个字段:myvalue的。

现在我想知道ID:1没有做另一个查询:

SELECT id FROM tbl WHERE field = 'myvalue' 

是它不可能性?

+1

你怎么了'ID:1'价值?它是默认值吗?你不应该有'AUTO_INCREMENT'吗? – Halcyon 2012-04-21 15:14:39

+2

您可能过多地匿名了SQL。我没有看到第一个查询会如何导致主键错误,除非'field'(而不是'id')是被键入的字段。 – 2012-04-21 15:15:25

+0

字段是唯一的,当然是像ID:X – dynamic 2012-04-21 15:22:14

回答

0

每个库都有一个规定来获取插入的行的id。

一样:简单mysql_query()使用mysql_insert_id()后以检索最后插入的行的id

Check this link

编辑:

请检查,如果您已经定义了唯一索引field列。

如果是的话,那么你不能在列field

+0

mysql_insert_id只有在查询成功插入,根据OP的问题,查询插入失败 – Dhiraj 2012-04-21 15:23:16

+0

mysql_insert_id doenst'工作时有一个重复的键错误 – dynamic 2012-04-21 15:23:26

+0

但如何查询失败?他没有提供该ID,以致它会给出重复的字段错误。 – 2012-04-21 15:30:36