COL: CSS:



整合性制約

整合性制約

データがデータベース管理者によってルール付けされたガイドラインに従うことを保証するメカニズムを,整合性制約と言う。

整合性制約を大別すると以下の通り。

表1: 整合性制約
制約名詳細
一意制約ルール付けされた列の値が一意であることを保証する。
NOT NULL 制約ルール付けされた列の値が NULL 値でないことを保証する。
外部キー制約ある 2 つのキーが,“主キー” と “外部キー” の関係を維持することを保証する。
CHECK 制約ルール付けされた列の値が,定義した条件に合致していることを保証する。

一意制約 (UNIQUE KEY 制約)

一意制約が動作する DML 操作上のタイミングは以下の通り。

表1: 一意制約の動作するタイミング
DML 句詳細
INSERTテーブル内の他キーと同一のキーが存在しないかチェックする。
UPDATEテーブル内の他キーと同一のキーが存在しないかチェックする。
DELETE動作しない。

NOT NULL 制約

NOT NULL 制約が動作する DML 操作上のタイミングは以下の通り。

表1: NOT NULL 制約の動作するタイミング
DML 句詳細
INSERTキーが NULL 値かどうかをチェックする。
UPDATEキーを NULL 値で更新しようとしていないかチェックする。
DELETE動作しない。

外部キー制約 (FOREIGN KEY 制約)

外部キー制約が動作する DML 操作上のタイミングは以下の通り。

表1: 外部キー制約の動作するタイミング
DML 句詳細
INSERT- 子テーブルに行挿入する場合,親テーブルに同一のキーが存在しているかチェックする。
UPDATE- 子テーブルの行更新をする場合,親テーブルに同一のキーが存在しているかチェックする。
- 親テーブルの行更新をする場合,子テーブルに参照行が存在しているかチェックする。
DELETE- 親テーブルの行削除をする場合,子テーブルに参照行が存在しているかチェックする。

また,特に DELETE 句を実行する場合,以下のオプションによって挙動が変化する。

表2: 外部キー制約の DELETE 句実行時オプション
オプション詳細
ON DELETE CASCADE親テーブルの行削除をする場合,子テーブルの参照行も一緒に削除する。
ON DELETE SET NULL親テーブルの行削除をする場合,子テーブルの参照行のキー値を NULL に設定する。

CHECK 制約

CHECK 制約が動作する DML 操作上のタイミングは以下の通り。

表1: CHECK 制約の動作するタイミング
DML 句詳細
INSERT条件を満たしているかチェックする。
UPDATE条件を満たしているかチェックする。
DELETE動作しない。