1つのコマンドで外部キー制約を持つ新しい列を追加する

1つのコマンドで外部キー制約を持つ新しい列を追加する photo 2 C

1つのコマンドで外部キー制約を持つ新しい列を追加する

タグ:
質問

私は外部キーになる新しい列を追加しようとしています。 2つの別々のALTER TABLEコマンドを使用して列と外部キー制約を追加できました。

ALTER TABLE one
ADD two_id integer;

ALTER TABLE one
ADD FOREIGN KEY (two_id) REFERENCES two(id);

2つではなく1つのALTER TABLEコマンドでこれを行う方法はありますか?私は動作するものを思いつくことができませんでした。

ベストアンサー

しばしばSQL関連の質問では、DBMSに依存します。一部のDBMSでは、コンマで区切られたALTERテーブル操作を組み合わせることができます。例えば…

1つのコマンドで外部キー制約を持つ新しい列を追加する photo 1

Informix 構文:

ALTER TABLE one
ADD two_id INTEGER,
ADD CONSTRAINT FOREIGN KEY(two_id) REFERENCES two(id);

IBM DB2 LUW の構文は同様ですが、キーワードADDを繰り返しますが(図を正しく読んだ場合)、追加された項目を分離するためにカンマを必要としません。

Microsoft SQL Server 構文:

ALTER TABLE one
ADD two_id INTEGER,
FOREIGN KEY(two_id) REFERENCES two(id);

そのようなALTER TABLE操作を組み合わせることはできません。標準SQLでは、ALTER TABLEステートメントで1つの操作しか許可されないため、標準SQLでは2つのステップで実行する必要があります。

1つのコマンドで外部キー制約を持つ新しい列を追加する photo 0


source
Oracleの単一のステートメントで外部キー制約を持つ新しい列を追加する方法
SQL – SQL Fiddleに新しい外部キー制約を追加できません
エラーコード:1215。外部キー制約(外部キー)を追加できません
外部キー制約を持つレコードを削除するには?
MySQLは外部キー制約を追加できません
Sequelize – 外部キー制約を追加できません
外部キーが存在しない場合は、名前を使用せずに外部キー制約を追加(または外部キー制約を破棄する)しますか?
Sequelize Migrations:同じテーブルの列に外部キー制約を追加する
「外部キー」と「制約外部キー」の違い
MySQLの外部キー制約 – 整数列
Rating