参照制約を追加するには

提供: DB2逆引きWiki
移動: 案内, 検索

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

目次

前提

  • データベース接続が必要
  • 以下のいずれかが必要: SYSADM権限, DBADM権限, 制約を追加する表に対するCONTROL特権, 制約を追加する表のスキーマに対するALTERIN特権

解説

表に対して参照制約を追加するには、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の行は削除できません。

注意

  • 参照先の列は主キーもしくは一意制約を持つこと。

参照

個人用ツール
名前空間

変種
操作
案内
ツール