2017-02-21 6 views
0

に複合外部キーを追加するは、私は以下の表を持っている既存のSQLテーブル

alter table z add constraint c foreign key (c) references x(a) 
alter table z add constraint d foreign key (d) references y(b) 

がそれです単一のsql命令でこの複合外部キーを既存のテーブルに追加することは可能ですか?

+0

あなたの例では –

+2

これは、複合制約はなく、何の複合外部キーはありませんが、これらは2つのdifderentのテーブルには2つのdifderent制約です。そうではありません。不可能です。 –

+0

これらの2つの異なるテーブルに1つの複合制約を追加できますか? –

答えて

0

2つの異なるテーブルを参照するため、これを単一の複合制約として作成することはできませんが、DBMSに応じて2つの制約を単一のsql命令に追加することは可能です(ただし、それが一般的に推奨されると思います)。たとえば、 DB2またはSQLServerの例を見つけます。

だから、これは可能かもしれない:

ALTER TABLE z 
    ADD CONSTRAINT c FOREIGN KEY (c) REFERENCES x(a) 
    ADD CONSTRAINT d FOREIGN KEY (d) REFERENCES y(b) 
+0

その構文はMichaelが使用しているDBMSに依存します - わからない –

+0

ANSI/ISO SQL標準によれば、alter table文ごとに1つのfkしか追加できません。 – jarlh

+0

ありがとうございます - 私はそれに応じて答えを編集しました。 a_horse_with_no_name:True、それは彼が提供した構文に基づいて推測されました - 私は間違っているかもしれません。 jarlh:確かにそうかもしれませんが(チェックできませんでしたが)、一部のDBはまだそれを許可しているようです。 SQL Server – skymon

関連する問題