重复输入mysql唯一字段

时间:2014-11-15 03:19:19

标签: php mysql

我有一个'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'的电子邮件列中的电子邮件数据。

2 个答案:

答案 0 :(得分:1)

你绝对可以毫无问题地做到这一点(参见SQL Fiddle here)。

我想你正在做的事情两个行都被更新为相同的值,相当于:

update t
    set code_number = '112225433';

这将生成您报告的错误。毫无疑问,许多SQL查询会产生这种影响。但是,这会产生这样的错误。

答案 1 :(得分:0)

这可能是您的SQL编辑器的问题。例如,它可以显示以前的值,但它可能已经更新它,以便您相信它尚未更改。之前我遇到过这样的问题:数值已在DB中更新,但编辑器尚未更新。