1

在插入时,我正在捕获唯一约束 mysql_errno() 1062。

这工作正常,但我想找到现有的行来重新设置或修改它。

是否有方法在插入失败时获取行 ID?我尝试了 mysql_insert_id() 但意识到这只会返回我正在插入(或未能插入)的行,因此我得到 0。

除了发出另一个 mysql_query 并简单地对重复值执行选择之外,别无选择?

我只是想确保没有更好、更快、更经济的方法来做到这一点。

4

2 回答 2

2

如果您尝试插入新行或更新现有值,那么REPLACE INTO就是您所需要的。如果涉及到约束,还请考虑INSERT ... ON DUPLICATE KEY UPDATE 语法,因为 REPLACE INTO 将删除然后插入。

于 2010-05-03T05:02:31.980 回答
0

您必须检查表中是否有任何“唯一”键(SHOW CREATE TABLE将它们全部列出),然后在表中查询您尝试的插入查询中的关联值。因此,如果您要插入字段 A、B、C、D 和 B、C,它们上有唯一键,那么:

SELECT id, B, C FROM table WHERE B=$B and C=$C;
于 2010-05-03T05:01:06.703 回答