2

私はすでに MySQL でテーブルを作成しており、列、つまり「myid」をテーブル、つまり「mytable」に追加したいと考えています。

主キーはすでに定義されています。

次のクエリを使用して、自動インクリメントを追加します。

ALTER TABLE mytable ADD myid INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE;

しかし、自動インクリメントは 1 ではなく 30 から開始する必要があります。

クエリに必要な変更は何ですか? これを追加する他の方法はありますか?

第二に、次の手順を使用すると、

最初にクエリを実行します:ALTER TABLE mytable AUTO_INCREMENT = 30;

次に実行しますALTER TABLE mytable ADD myid INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE;

大丈夫ですか?はい、もしくは、いいえ?

4

1 に答える 1

1

テーブルが空または非常に小さい場合は、最初に AUTO_INCREMENT 列を追加してから、次のように開始値を設定します。

myidとしてAUTO_INCREMENT作成:

ALTER TABLE `mytable` ADD `myid` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE;

その開始値を30 ALTER TABLE mytableAUTO_INCREMENT = 30 に設定します。

警告

たくさんのレコードがmytableあり、使用する場合

ALTER TABLE mytable AUTO_INCREMENT = 30;

MySQL サーバーは新しいテーブルを作成し、すべてのデータを古いテーブルから新しいテーブルにコピーし、古いテーブルを削除してから、新しいテーブルの名前を変更しますが、テーブルに構造的な変更はありません。サーバーの応答は、すべての行が次のaffectedようになっていることを示します。

mysql> テーブルの変更 mytable auto_increment = 30; クエリ OK、609481 行が影響を受けました (1 分 4.55 秒) レコード: 609481 重複: 0 警告: 0

データの 2 番目のコピー用の空きディスク容量が不十分であるなど、テーブルのコピーから発生する可能性がある潜在的な問題があります。

ダミー行を挿入して AUTO_INCREMENT 列を明示的に 29 に設定し、すぐにダミー行を削除するために使用できるトリックです。挿入される次の行は 30 から始まり、値はそこから上に向かっていきます。

于 2013-08-27T09:54:57.887 に答える