2012-03-22 11 views
0

重複ので、私は、Yは、テーブルの主キーである...が、その後、Y持つテーブルで2つのエントリ= 1,2が存在すると仮定更新キーエラー

UPDATE x 
SET y = y + 1; 

を実行、3 ... y = 1からy = 2のものを更新しようとすると、y = 2の既存の既存のエントリと競合するので、クエリはキー 'PRIMARY'の重複エントリについて文句を言います。 .isがmysqlにこれを無視させ、キーを手動で削除せずにすべてを更新する方法があります....私はキーを一時的に削除してからこれを実行してキーを再追加することができますが、おそらくこれをしないでこれを行うには...

+1

なぜあなたはそれをしたいですか? :) –

+0

問題キーを検索し、それらを修正するのはどうですか?あなたは本当にすべてのキーをkey + 1に合わせるように頼んでいますか? – Randy

+0

@Randy yes .............. – pillarOfLight

答えて

2

これを試すことができます

UPDATE x SET y = y + 1 order by y DESC 
+1

または多分2回の更新 - すべてのキーに最大の既存のキーよりも大きな数を追加する場合は、パス2で1を超える数を減算します。 – Randy