5

という名前の列にuniqueインデックスがありますlabelが、奇妙な理由で、次のような更新を試みます。

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

そして、ラベル = 'foo bar' の行が既に存在し、次のエラーが発生します。

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

MySQL に更新を行わせるにはどうすればよいですか? 技術的には、 key を持つ行はまだ 1 つしかないため、これは壊れてはいけませんfoo bar

ありがとう。

4

1 に答える 1

10

WHERE 句がないため、この SQL クエリは、books テーブル内のすべてのレコードをこれらの値で更新しようとしています。そのラベル値を持つレコードは 1 つしか持てないのに、クエリはそれらすべてをそれに設定しようとしているため、失敗します。

意図したクエリを実行していない可能性があると思います。そのラベルでレコードのタイトルと時間を更新するつもりだったのかもしれません。構文を確認してください。

于 2012-07-08T06:03:04.590 に答える