MySQL重复更新错误

时间:2018-01-25 16:01:50

标签: php mysql mysqli

我在ON DUPLICATE UPDATE遇到了一个独特的问题 我的表结构是:

ID = bigint(20) Primary key / Auto Increment<br>
uName = char(20);

附加索引:

uName_Unique = uName Unique<br>

表格数据:

ID = uName<br>
1 = Test01<br>
2 = Test02<br>
3 = Test03<br>

如果我尝试使用以下语句使用 uName 字段中的相同数据更新记录

INSERT(ID, uName) VALUES (2, 'Test01') ON DUPLICATE KEY UPDATE uName = 'Test01';

我收到错误消息:

  

错误:键'uName_UNIQUE'重复输入'Test01'

问题:

是否有一个简单的方法来管理错误,还是应该删除UNIQUE索引并允许重复?

2 个答案:

答案 0 :(得分:0)

如果表格中已存在名称

,则无法允许更新
INSERT INTO table(ID, uName) VALUES (2, 'Test01') 
ON DUPLICATE KEY UPDATE uName = 'Test01' WHERE NOT EXISTS (SELECT uName FROM table WHERE uName = 'Test01');

答案 1 :(得分:0)

当主键ID重复时发生ON DUPLICATE KEY UPDATE,错误显示,因为更新字段uName也是UNIQUE。所以你应该删除uName的唯一索引。