▲ ▼ 整合性制約
▲ 整合性制約
データがデータベース管理者によってルール付けされたガイドラインに従うことを保証するメカニズムを,整合性制約と言う。
整合性制約を大別すると以下の通り。
制約名 | 詳細 |
一意制約 | ルール付けされた列の値が一意であることを保証する。 |
NOT NULL 制約 | ルール付けされた列の値が NULL 値でないことを保証する。 |
外部キー制約 | ある 2 つのキーが,“主キー” と “外部キー” の関係を維持することを保証する。 |
CHECK 制約 | ルール付けされた列の値が,定義した条件に合致していることを保証する。 |
△ 一意制約 (UNIQUE KEY 制約)
一意制約が動作する DML 操作上のタイミングは以下の通り。
DML 句 | 詳細 |
INSERT | テーブル内の他キーと同一のキーが存在しないかチェックする。 |
UPDATE | テーブル内の他キーと同一のキーが存在しないかチェックする。 |
DELETE | 動作しない。 |
△ NOT NULL 制約
NOT NULL 制約が動作する DML 操作上のタイミングは以下の通り。
DML 句 | 詳細 |
INSERT | キーが NULL 値かどうかをチェックする。 |
UPDATE | キーを NULL 値で更新しようとしていないかチェックする。 |
DELETE | 動作しない。 |
△ 外部キー制約 (FOREIGN KEY 制約)
外部キー制約が動作する DML 操作上のタイミングは以下の通り。
DML 句 | 詳細 |
INSERT | - 子テーブルに行挿入する場合,親テーブルに同一のキーが存在しているかチェックする。 |
UPDATE | - 子テーブルの行更新をする場合,親テーブルに同一のキーが存在しているかチェックする。 - 親テーブルの行更新をする場合,子テーブルに参照行が存在しているかチェックする。 |
DELETE | - 親テーブルの行削除をする場合,子テーブルに参照行が存在しているかチェックする。 |
また,特に DELETE 句を実行する場合,以下のオプションによって挙動が変化する。
オプション | 詳細 |
ON DELETE CASCADE | 親テーブルの行削除をする場合,子テーブルの参照行も一緒に削除する。 |
ON DELETE SET NULL | 親テーブルの行削除をする場合,子テーブルの参照行のキー値を NULL に設定する。 |
△ CHECK 制約
CHECK 制約が動作する DML 操作上のタイミングは以下の通り。
DML 句 | 詳細 |
INSERT | 条件を満たしているかチェックする。 |
UPDATE | 条件を満たしているかチェックする。 |
DELETE | 動作しない。 |