《Oracle子句语法速查》【 COLUMN CONSTRAINT 】

列制約を指定する

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