5

unique在名为 的列上有一个索引label,但出于某种奇怪的原因,我尝试进行如下更新:

UPDATE books SET label = 'foo bar', title = 'something new', modified = UTC_TIMESTAMP();

并且已经存在一行 label = 'foo bar' 这个错误:

 #1062 - Duplicate entry 'foo bar' for key 'label'

如何让 MySQL 进行更新?这不应该被打破,因为从技术上讲,仍然只有一行 key foo bar

谢谢。

4

1 回答 1

10

此 SQL 查询尝试使用这些值更新 books 表中的每条记录,因为您没有 WHERE 子句。它失败了,因为您只能拥有一个具有该标签值的记录,但查询想要将它们全部设置为它。

我认为您可能没有执行您想要的查询。也许您打算使用该标签更新记录的标题和时间。检查你的语法。

于 2012-07-08T06:03:04.590 回答