2017-06-19 13 views
2

私はバイナリ(16)形式のUUIDの列を持つテーブルを持っていますが、値が設定されていない古いエントリをすべて更新する必要があります。しようとクエリ:UPDATE QUERYのREPLACE(UUID)中にSQLが重複しています

UPDATE sometable SET uuid=UNHEX(REPLACE(UUID(), '-', '')) WHERE uuid IS NULL; 

そしてそれが唯一の行を更新した後、このようなエラーを返します:

重複エントリ「\ XAD \ X15 \ xEAoT \ XAB \ x11の\ XE7 \ x9B \ x0F \ xF0yYry \ xD5 'by key' uuid '

すべての行を更新する方法はありますか?私は助けに感謝します...

+0

更新プログラムを使用する代わりに、元のIDのテーブルを新しいIDに作成し、新しいIDをそのテーブルから既存のクエリに追加することをお勧めします。 または、作成したテーブルからテーブルを更新します。 –

+0

このエントリはすでに別のレコードのどこかに存在する可能性がありますか? –

+0

@Q。 Holness、かなり複雑な方法ですが、ありがとうございます。 –

答えて

0

UUID()はステートメントのために一度評価されます。つまり、変更する必要のある行はすべて同じ値になります。

SHOW CREATE TABLEを私共と共有したいですか?私はあなたにuuidsを使用すべきではないと言って刺すかもしれません。

関連する問題