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 サイトの他の関連記事を参照してください。