version 11
CONSTRAINT sql_name
FOREIGN KEY (column_reference, ... , column_reference)
REFERENCES sql_name [(column_reference, ... , column_reference)]
[ON DELETE {RESTRICT |CASCADE}]
[ON UPDATE {RESTRICT |CASCADE}]
説明
foreign_key_definitionは、データ整合性を確実にする目的で、他のテーブルに設定された主キーフィールド (column_reference) に一致させるために使用します。FOREIGN KEY制約は、(他のテーブルの主キーに一致する) 外部キーとして定義されるカラム参照 (column_reference)を渡すために使用されます。
CONSTRAINT sql_name 節は、FOREIGN KEY制約に名前をつけるために使用します。
続くREFERENCES節は、一致する他のテーブル (sql_name) の主キーフィールドソースを指定します。REFERENCES節で指定されるテーブル (sql_name) が、外部キー制約に一致するキーとして使用される主キーを持つ場合、column_referenceリストを省略できます。
オプションのON DELETE CASCADE節は、(主キーフィールドを含む) 親テーブルからローが削除された時、(外部キーフィールドを含む) 子テーブルの関連するローも削除することを指定します。オプションのON DELETE RESTRICT節を渡すと、他のテーブルが参照するデータが削除されることを防ぎます。
オプションのON UPDATE CASCADE節は、(主キーフィールドを含む) 親テーブルでローが更新されると、(外部キーフィールドを含む) 子テーブルの関連するローも更新されることを指定します。オプションのON UPDATE RESTRICT節を渡すと、他のテーブルが参照するデータが更新されることを防ぎます。
ON DELETEとON UPDATE両方の節が渡されるとき、両方は同じタイプでなければなりません (例. ON DELETE CASCADEとON UPDATE CASCADE、またはON DELETE RESTRICTとON UPDATE RESTRICT)。
ON DELETEとON UPDATE節どちらも渡されないとき、CASCADEがデフォルトルールとして使用されます。
例題
この例題はORDERSテーブルを作成し、Customer_SIDカラムを、CUSTOMERS テーブルのSIDカラムが割り当てられる外部キーとして設定します:
CREATE TABLE ORDERS (Order_ID INT32, Customer_SID INT32, Amount NUMERIC, PRIMARY KEY (Order_ID), FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER(SID));
参照
ALTER TABLE, column_reference, primary_key_definition.