【问题标题】:MSSQL: Update row returns duplicate key errorMSSQL:更新行返回重复键错误
【发布时间】:2014-12-29 12:20:04
【问题描述】:

我正在使用 CodeIgniter 和 MSSQL 构建一个 Web 应用程序,但是当我尝试更新数据库中的一行时,我收到“重复键”错误:

Error Number: 23000
Cannot insert duplicate key row in object 'dbo.users' with unique index 'IX_users'. 
The duplicate key value is (user@mail.com).

UPDATE users SET email='user@mail.com', name='User', surname='Surname', password='1234'

无论电子邮件字段是否保持不变,当我运行更新时都会发生这种情况。我不是 MSSQL 专家,但我没有看到更新行和保持 unique 字段相同的问题。

我很乐意提供您可能需要的任何其他信息。

【问题讨论】:

  • IX_users 索引中存在哪些列。如果只有email 列,则'user@mail.com' 值已经存在于email column
  • 我希望只有email 列出现在IX_users 索引中。因为'user@mail.com' 值已经存在于email column 中,所以您收到此错误。唯一索引不允许重复值
  • 谢谢,我会调查一下,虽然我不知道 IX_users 索引是什么或它是如何工作的。
  • 我想你忘记了where cluase

标签: php sql-server codeigniter


【解决方案1】:

问题很简单,您正在更新所有用户以获取相同的电子邮件

UPDATE users 
SET email='user@mail.com', name='User', surname='Surname', password='1234'

缺少 WHERE 子句。示例:

WHERE email='user@mail.com'

【讨论】:

  • 谢谢,。我以为 CodeIgniter 正在处理这个问题,但我一定是弄错了。它现在可以工作了,再次感谢。
猜你喜欢
  • 1970-01-01
  • 2012-04-07
  • 2018-10-21
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 2012-11-16
相关资源
最近更新 更多