他の2つのテーブル間の多対多関係の中間テーブルとして機能しているため、主キーとして2つの列を持つ多数の行(約1万行)を持つ既存のテーブルがあります。
id
新しい要件については、自動増分値を持つ主キーでなければならない新しい列の追加(たとえば)を割り当てる必要があります。次のクエリを実行しました。
ALTER TABLE `momento_distribution` ADD `id` INT( 11 ) NOT NULL FIRST;
ALTER TABLE `momento_distribution` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` );
最初のクエリは正常に実行されましたが、次のエラーで2番目のクエリが生成されました。
1062 - Duplicate entry '0' for key 'PRIMARY'
理由は明らかです。新しい列id
はデフォルト値として0になり、主キーは重複する値を持つことができません。
2番目のクエリを実行する前に、1,2,3...のような新しい列の増分値を設定する必要があります。
Oracleでは、これはROWIDを介して実行できます。MySQLにも同等の@rowidがあります。誰かが@rowidを列の列値として設定するクエリを提案できますid
か?
注:10000行を手動で変更することはできないため、これはクエリを介して行う必要がありました。