《Oracle子句语法速查》【 TABLE CONSTRAINT 】
表制約を指定する
→ [ CONSTRAINT 制約名 ] →
→┬ UNIQUE ( ┬ 列名 ┬ ) ───────────────────────┬→
│ └ ← , ┘ │
│[ 指定した列の値に重複を許さない事を指定する ] │
├ PRIMARY KEY ( ┬ 列名 ┬ ) ─────────────────────┤
│ └ ← , ┘ │
│[ 指定した列を主キーとして使用する事を指定する(重複不可になる) ] │
├ FOREIGN KEY (┬ 列名 ┬) REFERENCES [ スキーマ . ] 表名 → │
│ └ ← , ┘ → [ (┬ 列名 ┬) ] [ ON DELETE CASCADE ] ┤
│ └ ← , ┘ │
│[ 指定した表との参照整合性制約を指定する ] │
│[ ON DELETE CASCADE : 行削除と同時に、外部表の該当行を削除する ] │
└ CHECK ( 条件式 ) ──────────────────────────┘
[ 行に対する条件を指定する(この条件を満たさない行は表に格納できない) ]
→┬───────────────────────────────────┬→
├ [ NOT ] DEFFERRABLE ] ───────────────────────┤
│[ チェックを COMMIT 時点まで遅らせる( NOT 指定時は DML 文実行時 ) ] │
├ INITIALLY { IMMEDIATE | DEFFERRABLE } ───────────────┤
│[ IMMEDIATE : デフォルトで DML 文実行時にチェックを行う ] │
│[ DEFFERRABLE : デフォルトで COMMIT 実行時にチェックを行う ] │
└ ← ─────────────────────────────────┘
→ [ USING INDEX ┬─────────────────────────┬ ] →
├<SEGMENT ATTRIBUTES句> ─────────────┤
├ NOSORT ───────────────┤
│[ データが昇順に格納されている為にソートしない ]│
└ ← ───────────────────────┘
[ UNIQUE, PRIMARY KEY 制約の場合に使用する索引情報を指定する ]
→ [ ┬ EXCEPTIONS INTO [ スキーマ . ] 表名 ────────┬ ] →
│[ 制約に違反する列の ROWID を格納する表を指定する ] │
├ ENABLE VALIDATE ─────────────────┤
│[ 既存データが制約に従っているか検証する ] │
├ ENABLE NOVALIDATE ─────────────────┤
│[ 既存データが制約に従っているか検証しない ] │
└ DISABLE ──────────────────────┘
[ 制約を無効にする ]