[解決済み] 既存のSQLiteテーブルに外部キーを追加するにはどうすればよいですか?
2022-05-10 11:40:58
質問
次のような表があります。
CREATE TABLE child(
id INTEGER PRIMARY KEY,
parent_id INTEGER,
description TEXT);
に外部キー制約を追加するにはどうすればよいですか。
parent_id
? 外部キーが有効になっていると仮定します。
ほとんどの例では、テーブルを作成することを前提としています。既存のテーブルに制約を追加したいのですが。
どのように解決するのですか?
できません。
テーブルに外部キーを追加するSQL-92の構文は次のようになりますが。
ALTER TABLE child ADD CONSTRAINT fk_child_parent
FOREIGN KEY (parent_id)
REFERENCES parent(id);
SQLiteは
その
ADD CONSTRAINT
のバリアントです。
ALTER TABLE
コマンド(
sqlite.org: SQLiteが実装していないSQLの機能
).
したがって、sqlite 3.6.1では外部キーを追加する唯一の方法は
CREATE TABLE
を以下のように設定します。
CREATE TABLE child (
id INTEGER PRIMARY KEY,
parent_id INTEGER,
description TEXT,
FOREIGN KEY (parent_id) REFERENCES parent(id)
);
残念ながら、既存のデータを一時テーブルに保存し、古いテーブルを削除して、FK制約付きの新しいテーブルを作成し、一時テーブルからデータをコピーバックする必要があります。( sqlite.org - FAQ: Q11 )
関連
-
[解決済み] FOREIGN KEY制約で参照されているため、テーブルを切り捨てることができないのですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] SQLiteでテーブルが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] SQL Serverでテーブルからカラム名を取得するにはどうすればよいですか?
-
[解決済み] 外部キー制約のあるテーブルを切り捨てるには?
-
[解決済み] Sqliteの複数カラムの主キー
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】既存テーブルへの外部キー追加
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
[解決済み] LINQでInclude()は何をするのですか?
-
[解決済み] SQLの結合形式 - 入れ子になった内側join
-
[解決済み] データベースのインデックス作成はどのように行われるのですか?[クローズド]
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] SQL Serverで結果をページ分割する最も良い方法は何ですか?
-
[解決済み] 既存のカラムにIDを追加する
-
[解決済み] Postgres でサブクエリを使用してテーブルの行を更新する
-
[解決済み] Laravel Schema onDelete は null を設定します。