DEFAULT / FOREIGN KEY


デフォルト値の割り当て(DEFAULT)

デフォルト値とは、テーブルへの INSERT 文に列の値が指定されなかった場合に、そのテーブルの列に自動的に挿入される値のことです。

/* DEFAULT の割り当て */
CREATE TABLE 商品表
(
   商品コード  INTEGER NOT NULL PRIMARY KEY ,
   商品名      CHAR(16) UNIQUE,
   商品単価    INTEGER DEFAULT 2000
) ;

デフォルト値と NULL に関する規則

  • 列に NOT NULL 制約も DEFAULT 句も設定されていない場合、そのテーブルへの INSERT がその列に値を提供しないと、列には NULL が挿入される。
  • 列に NOT NULL 制約が適用されているいないに関わらず、列に DEFAULT 句が設定されている場合、そのテーブルへの INSERT がその列の値を提供しないと、列にはあらかじめ指定されたデフォルト値が挿入される。
  • 列に NOT NULL 制約が適用され、デフォルト値が指定されていない場合、そのテーブルへの INSERT は必ず列の値を提供しなければならない。さもなければ INSERT はエラーとして拒否される。

FOREIGN KEY 制約

外部キーはどのテーブルのどの行も、親キーを持つテーブルのたった 1つの行を参照することを示します。

ただし、複数の外部キーの値が同じ親キーの値を参照する可能性があるため、親キーは一意性を確立する制約、すなわち PRIMARY KEY 制約または UNIQUE 制約を持っていなければなりません。

一般的には前者となります。

SQL は、FOREIGN KEY 制約による参照整合性をサポートしています。

この制約は、外部キーと親キーに参照整合性の原則を守らせるために、ユーザがデータベースに入力できる値を制限できます。
FOREIGN KEY 制約の適用には、親キーにまだ存在しない値をはじくように、外部キー列を制限するという効果があります。

テーブル制約

FOREIGN KEY 列リスト REFERENCES 親テーブル(列リスト) ;
CREATE TABLE 受注表
(
   受注番号      INTEGER PRIMARY KEY ,
   得意先コード  CHAR(5) ,
   商品コード    CHAR(4) ,
   受注個数      INTEGER ,
   納品日        CHAR(8) ,
   FOREIGN KEY (得意先コード)
            REFERENCES 得意先表(得意先コード) ,
   FOREIGN KEY (商品コード)
            REFERENCES 商品表(商品コード)
) ;

列制約

REFERENCES 親テーブル(列リスト) ;
 CREATE TABLE 受注表
(
   受注番号      INTEGER PRIMARY KEY ,
   得意先コード  CHAR(5)
              REFERENCES 得意先表(得意先コード) ,
   商品コード    CHAR(4)
              REFERENCES 商品表(商品コード) ,
   受注個数      INTEGER ,
   納品日        CHAR(8)
  ) ;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


+ 3 = 6

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>