外部キーとなる新しい列を追加しようとしています。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 コマンドでこれを行う方法はありますか? 私はうまくいくものを思いつくことができませんでした。
外部キーとなる新しい列を追加しようとしています。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 TABLE
コンマで区切られた操作を組み合わせることができます。例えば...
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 では、ステートメント内で 1 つの操作しか許可されALTER TABLE
ないため、標準 SQL では 2 つの手順で実行する必要があります。
MS-SQLServer の場合:
ALTER TABLE one
ADD two_id integer CONSTRAINT fk FOREIGN KEY (two_id) REFERENCES two(id)
SQL Serverの場合、次のようになります
ALTER TABLE one
ADD two_id integer constraint fk foreign key references two(id)
FK 列を追加するPostgreSQL DLL :
ALTER TABLE one
ADD two_id INTEGER REFERENCES two;