テーブル作成時の外部キー指定の際に「matchtype」が不明だったので調べました。
CREATE時に外部キーを指定する構文
列に指定する場合
CREATE TABLE table(
column INTEGER REFERENCES reftable [ ( refcolumn ) ] [ MATCH matchtype ]
);
表に指定する場合
CREATE TABLE table(
column INTEGER,
CONSTRAINT fkey_name FOREIGN KEY ( column [, ... ] )
REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH matchtype ]
);
matchtypeの種類
公式ドキュメントからの引用です。
1.FULL
全ての外部キー列がNULLとなる場合を除き、複数列外部キーのある列がNULLとなることを許可しません。それらがすべてNULLであれば、その行は被参照テーブル内で一致があることは要求されません。
2.PARTIAL
まだ実装されていません。
3.SIMPLE(デフォルト)
外部キーの一部がNULLであることを許可します。それらの一部がNULLであれば、その行は被参照テーブル内で一致があることは要求されません。
(PostgreSQL 9.4.5文書:https://www.postgresql.jp/document/9.4/html/sql-createtable.html)
外部キーに複数のカラムを指定した場合の制約ですね。
FULL
は[外部キー列が全てNULL]または[外部キー列が全てNULL以外の値]であることを保証する制約です。
SIMPLE
は特に制約しない、ということですね。