OceanBaseデータベースは、さまざまなタイプの完全性制約をサポートしています。
ユーザーは以下の完全性制約を使用して、入力される列値に制限を加えることができます:
NOT NULL完全性制約UNIQUE KEY完全性制約PRIMARY KEY完全性制約参照整合性制約
CHECK完全性制約
NOT NULL 完全性制約
NULLルール(Null Rule)とは、特定の列に定義されるルールであり、挿入または更新されるデータ行の列値が空値NULLであることを禁止する役割を果たします。
UNIQUE KEY 完全性制約
一意値ルール(Unique Value Rule)とは、特定の列(または列セット)に定義されるルールであり、挿入または更新されるデータ行のこの列(または列セット)の値が一意であることを保証する役割を果たします。
PRIMARY KEY 完全性制約
主キー値ルール(Primary Key Value Rule)とは、特定のキー(Key)(キーとは一つの列または一つの列セットを指す)に定義されるルールであり、テーブル内の各データ行が特定のキー値によって一意に決定されることを保証する役割を果たします。
参照整合性制約
参照整合性ルール(Referential Integrity Rule)とは、特定のキー(Key)(キーとは一つの列または一つの列セットを指す)に定義されるルールであり、任意のキー値が関連テーブル(Related Table)の特定のキー値、すなわち参照値(Referenced Value)とマッチすることを保証する役割を果たします。
参照整合性制約を適用する際、参照値に対してどのようなデータ操作(Data Manipulation)を行うことができるか、またこれらの操作が依存値(Dependent Value)にどのような影響を与えるかについては、以下の具体的なルールを参照してください:
Restrict:参照値への更新および削除を許可しません。
Set to Null:参照値が更新または削除された場合、影響を受けるすべての依存値が
NULLに設定されます。Set to Default:参照値が更新または削除された場合、影響を受けるすべての依存値にデフォルト値が付与されます。
Cascade:参照値が更新された場合、影響を受けるすべての依存値も同じ値に更新されます。参照データ行(Referenced Row)が削除された場合、影響を受けるすべての依存データ行(Dependent Row)も削除されます。
No Action:参照値への更新および削除を許可しません。このルールは
RESTRICTとは異なり、ステートメント終了時にのみチェックが行われます。制約が遅延(Deferred)されている場合は、トランザクション終了時にチェックが行われます。(Oracleのデフォルト動作はNo Actionです。)
CHECK 完全性制約
比較的複雑な完全性チェック(Complex Integrity Checking)であり、ユーザー定義のルールで、特定の列(または列ファミリー)に対して適用されます。その役割は、ユーザーが定義した式または関数に基づいてデータ行の列値を計算し、計算結果に基づいてそのデータ行の挿入または更新を許可するかどうかを決定することです。