ホームページ >データベース >mysql チュートリアル >既存の SQLite テーブルに外部キーを追加するにはどうすればよいですか?

既存の SQLite テーブルに外部キーを追加するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-05 07:33:40999ブラウズ

How Do I Add a Foreign Key to an Existing SQLite Table?

既存の SQLite テーブルへの外部キーの追加

課題:

既存の SQLite テーブルを操作しています、特定のキーに外部キー制約を追加する必要があります。

解決策:

他の SQL 実装とは異なり、SQLite は ALTER TABLE コマンドの ADD CONSTRAINT バリアントをサポートしません。したがって、外部キー制約を既存のテーブルに直接追加することはできません。

代替アプローチ:

望ましい結果を達成するには、次の手順に従う必要があります。

  1. 既存のテーブルのデータを一時テーブルに保存します。
  2. ドロップ既存のテーブル。
  3. 外部キー制約を含めてテーブルを再作成します。
  4. 一時テーブルから新しいテーブルにデータを戻します。

SQL の例このプロセスの場合:

-- Step 1: Create a temporary table
CREATE TEMPORARY TABLE t_child AS SELECT * FROM child;

-- Step 2: Drop the existing table
DROP TABLE child;

-- Step 3: Recreate the table with the foreign key constraint
CREATE TABLE child (
    id INTEGER PRIMARY KEY,
    parent_id INTEGER,
    description TEXT,
    FOREIGN KEY (parent_id) REFERENCES parent(id)
);

-- Step 4: Insert data back from the temporary table
INSERT INTO child SELECT * FROM t_child;

これらの手順を実行すると、基本的に、目的の外部キー制約を持つ新しいテーブルを作成します。元のテーブルのデータを保持します。

以上が既存の SQLite テーブルに外部キーを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。