![]() 前へ |
![]() 次へ |
制約は、データベース内の情報と関連付けるビジネス・ルールを順守するために使用されます。制約によって、無効なデータが表に挿入されないようにします。ビジネス・ルールでは、必ずTRUEまたはFALSEになる条件と関係が指定されます。
たとえば、従業員表の給与列に、給与< 10000という制約を定義した場合、この制約によって、この表のすべての行で、この列には10000を超える数値を格納できない、というルールが順守されます。INSERT文またはUPDATE文によってこの整合性制約への違反が発生した場合は、エラー・メッセージが表示されます。制約を使用すると、ロードのパフォーマンスが低下することに注意してください。
表、ビューおよびマテリアライズド・ビューに対して次の制約を定義できます。
一意キー(UK): UK制約では、1つの列または列セット(キー)内のすべての値が一意であることが必要です。表内のどの2つの行にも、指定された列または列セットに重複する値を格納できません。UK列にはNULL値も格納できます。
主キー(PK): キー(列または列セット)に定義される値。この値は、表内の各行を、キー(列または列セット)内の値で一意に識別できることを指定します。表内のどの2つの行にも、指定された列または列セットに重複する値を格納できません。データベース内の各表に設定できるPK制約は1つのみです。PK列にはNULL値を格納できません。
外部キー(FK): 1つの表内のキー(列または列セット)に定義されるルール。このルールは、該当するキーの値が、参照表のPKキーまたはUKキー(列または列セット)の値と一致することを保証します。
チェック制約: 列(または列セット)に対するユーザー定義のルール。このルールは、行の挿入と更新を、その列(または列セット)に格納されている値に基づいて制限します。チェックの条件は、挿入または更新する行の値を使用して評価されるブール式であることが必要です。
たとえば、受注日<出荷日という条件では、受注日列の値が出荷日列の値より必ず前の日付であることがチェックされます。この条件を満たしていない場合は、表のロード時にエラーが発生し、レコードは拒否されます。チェック条件に、副問合せや順序、またはSYSDATE、UID、USER、USERENV SQL関数を含めることはできません。チェック制約はデータの検証に役立ちますが、ロードのパフォーマンスは低下します。