DB2逆引きリファレンス目次】 【DB2逆引きリファレンス目次#実装編】 【DB2逆引きリファレンス目次#制約

前提

解説

表に対して参照制約を追加するには、ALTER TABLEを用います。

ALTER TABLE 表名 ADD [CONSTRAINT 制約名 ]
  FOREIGN KEY ( 外部キー指定 )
  REFERENCES 参照表名 ( 参照列名 )
  [ON DELETE 削除時アクション指定 ]
  [ON UPDATE 更新時アクション指定 ]
  [NOT ENFORCED]

表名
: 参照制約を追加する表の名前を指定します。

CONSTRATINT 制約名
: 追加する一意制約の名前を指定します。指定しない場合は自動的に付与されます。

外部キー指定
: 外部キーとして用いる列の名前を指定します。複数指定する場合はカンマで区切って並べます。

参照表名
: 参照する表の名前を指定します。

参照列名
: 参照する列を指定します。指定の形式は外部キーの場合と同じです。

ON DELETE 削除時アクション指定
: 参照先の行が削除されようとした時のアクションを指定します。

NO ACTION
: 何もしません。これがデフォルトです。

RESTRICT
: 参照している行がある場合は行の削除を許可しません。

CASCADE
: 参照している行も一緒に削除します。

SET NULL
: 参照している外部キーの値にNULLをセットします。

ON UPDATE 更新時アクション指定
: 参照先の行が更新された時のアクションを指定します。

NO ACTION
: 何もしません。これがデフォルトです。

RESTRICT
: 参照している行がある場合は行の変更を許可しません。

CASCADE
: 参照している外部キーの値も一緒に変更します。

SET NULL
: 参照している外部キーの値にNULLをセットします。

NOT ENFORCED
: 参照制約はデータベースによりチェックされませんが、最適化の際の参考情報として利用されます。

使用例

参照制約(ここでは表parentsの主キーidに対する外部キーparentid)を表(ここではchildren)に追加する例。

db2 ==> ALTER TABLE children ADD FOREIGN KEY (parentid) REFERENCES parents (id) ON DELETE RESTRICT↓

ON DELETE RESTRICTを指定しているため、childrenから参照されているparentsの行は削除できません。

注意

参照