33

mysql db テーブルを id (auto) から uid に変更しています。

ALTER TABLE companies DROP PRIMARY KEY;
ALTER TABLE companies ADD PRIMARY KEY (`uuid`);

これは私が得るエラーです..

[SQL] ALTER TABLE companies DROP PRIMARY KEY;
[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

ID を主キーとして削除するため、ID を非自動インクリメントに変更する必要があることは理解しています。列を変更して主キーと自動インクリメントを削除する構文は何ですか?

ALTER TABLE companies change id id ?????????? int(11)
4

4 に答える 4

46

id単一の SQL ステートメントで列から自動インクリメントと主キーを削除する必要がある場合は、次のようにする必要があります。

ALTER TABLE companies DROP PRIMARY KEY, CHANGE id id int(11);

ALTER TABLE実際、単一のクエリですべてを実行できるはずです。

ALTER TABLE companies
DROP PRIMARY KEY,
CHANGE id id int(11),
ADD PRIMARY KEY (uuid);
于 2010-06-22T05:18:55.070 に答える
6

使用できる列の名前を変更していない場合MODIFY

ALTER TABLE `companies` MODIFY `id` int(11), 
                           DROP PRIMARY KEY, 
                   ADD PRIMARY KEY (`uuid`);

これをすべて1つのalterステートメントで行うことにより、アトミックとしても扱われるため、クエリ間で矛盾が生じる可能性はありません(複数のステートメントを連続して実行する場合とは異なります)。

于 2014-03-07T15:03:14.770 に答える