《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  ──────────────────────┘
       [ 制約を無効にする ]