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

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

DDD
リリース: 2025-01-04 03:55:38
オリジナル
264 人が閲覧しました

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

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

データベースをクエリするときは、データの整合性を維持することが最も重要です。外部キーは、テーブル間の関係を強制し、データ参照が有効であることを保証する上で重要な役割を果たします。ただし、SQLite のコンテキストでは、既存のテーブルの変更に関して特定の制限が存在します。

課題: 既存のテーブルへの外部キーの追加

次のシナリオを考えてみましょう。次のスキーマを持つ「child」という名前の既存の SQLite テーブルがあります:

CREATE TABLE child( 
  id INTEGER PRIMARY KEY, 
  parent_id INTEGER, 
  description TEXT);
ログイン後にコピー

あなたの目的は、外部キーがすでに有効になっていると仮定して、「parent_id」列に対する外部キー制約。ただし、従来の方法では十分ではない場合があります。

解決策: 制限事項と回避策

SQLite では、「ALTER」を使用して既存のテーブルに外部キーを直接追加することはできません。 TABLE ADD CONSTRAINT」構文。他のデータベース システムとは異なり、SQLite はこの特定の ALTER TABLE バリアントをサポートしていません。

唯一の実行可能な解決策は、テーブルの作成中にテーブルを変更することです。既存の「子」テーブルを削除し、外部キー制約を使用してテーブルを再作成し、一時テーブルから保存したデータを再設定できます。

CREATE TABLE child ( 
    id           INTEGER PRIMARY KEY, 
    parent_id    INTEGER, 
    description  TEXT,
    FOREIGN KEY (parent_id) REFERENCES parent(id)
);
ログイン後にコピー

この手順により、外部キー制約が正常に適用されることが保証されます。 「子」テーブル用に確立されています。

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

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