我有一个'code_number'
列,其中包含varchar(25)字段类型,我将其设置为 Unique
字段类型。我尝试将2个数字插入number
列,但编号不同。第一个数字是'112225577'
,第二个数字是'112228899'
。现在,我尝试更新第一个号码,只更改3个最后一个数字'577'
'433'
,变为'112225433'
。但是我收到错误Duplicate entry '112225433' for key 'code_number'
。
怎么可能重复?我只有2个数据,数据不一样。任何人都可以向我解释为什么会这样吗?
更新
这是我的代码。
产品
id INT(11)
product VARCHAR(250)
code_number VARCHAR(25) UNIQUE
...
帐户
id INT(11)
name VARCHAR(250)
email VARCHAR(100) UNIQUE
...
我的查询是这样的:
$this->db->set('code_number','112225433');
$this->db->where('code_number','112225577');
$this->db->update('product');
当我尝试更新帐户记录时,同样的问题会发送到电子邮件列。 这是代码示例:
$this->db->set('email','andy123@yahoo.com');
$this->db->where('name','Andy');
$this->db->update('account');
name='Andy'
为'andy123@hotmail.com'
的电子邮件列中的电子邮件数据。
答案 0 :(得分:1)
你绝对可以毫无问题地做到这一点(参见SQL Fiddle here)。
我想你正在做的事情两个行都被更新为相同的值,相当于:
update t
set code_number = '112225433';
这将生成您报告的错误。毫无疑问,许多SQL查询会产生这种影响。但是,这会产生这样的错误。
答案 1 :(得分:0)
这可能是您的SQL编辑器的问题。例如,它可以显示以前的值,但它可能已经更新它,以便您相信它尚未更改。之前我遇到过这样的问题:数值已在DB中更新,但编辑器尚未更新。