0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【PostgreSQL】外部キー指定時のMATCH matchtype[FULL | PARTIAL | SIMPLE]について

Posted at

テーブル作成時の外部キー指定の際に「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は特に制約しない、ということですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?