ホームページ > データベース > mysql チュートリアル > データを失ったり外部キー制約を破ったりすることなく、MySQL の既存のテーブルに自動インクリメントを追加するにはどうすればよいですか?

データを失ったり外部キー制約を破ったりすることなく、MySQL の既存のテーブルに自動インクリメントを追加するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-26 15:20:30
オリジナル
987 人が閲覧しました

How can I add auto-increment to existing tables in MySQL without losing data or breaking foreign key constraints?

MySQL の既存のテーブルに自動インクリメントを追加する

自動インクリメンタが欠落しているデータベースを継承する場合でも、この機能を有効にすることができます。主キー列を自動インクリメントフィールドに変換する方法は次のとおりです。

ALTER TABLE table_name MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT;
ログイン後にコピー

ID 列は、テーブルに挿入される新しい行に対して一意の値を自動的に生成するようになります。

ただし、外部キーの依存関係を持つ列を変更すると (別のテーブルが ID を参照する場合など)、エラー 150 が発生する場合があります。この問題をトラブルシューティングするには:

  • 依存テーブル内の外部キー制約との競合を確認します。
  • 外部キー制約を一時的に削除し、自動インクリメントが有効になった後に再作成することで、依存関係のサイクルを断ち切ります。

自動インクリメント機能が導入されたら、新しいキー制約を挿入します。 id 列の値を指定しない行には、一意の連続した値が設定されます。

INSERT INTO table_name () VALUES ();
ログイン後にコピー

列定義を適切に変更することで、新しい列を作成して元の列を削除する必要がなくなり、列の内容は維持されます。テーブルの主キー制約と参照整合性の維持。

以上がデータを失ったり外部キー制約を破ったりすることなく、MySQL の既存のテーブルに自動インクリメントを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート