151

外部キーとなる新しい列を追加しようとしています。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 コマンドでこれを行う方法はありますか? 私はうまくいくものを思いつくことができませんでした。

4

12 に答える 12

211

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 つの手順で実行する必要があります。

于 2013-07-15T01:59:48.917 に答える
96

MS-SQLServer の場合:

ALTER TABLE one
ADD two_id integer CONSTRAINT fk FOREIGN KEY (two_id) REFERENCES two(id)
于 2013-07-15T01:57:13.923 に答える
17

SQL Serverの場合、次のようになります

ALTER TABLE one
ADD two_id integer constraint fk foreign key references two(id)
于 2015-02-17T22:14:45.303 に答える
2

FK 列を追加するPostgreSQL DLL :

ALTER TABLE one
ADD two_id INTEGER REFERENCES two;
于 2018-01-09T04:47:45.423 に答える