sql 主キーとは
2011/03/28
「主キー」と「プライマリキー(primary key)」の両方の表現があるのでそれぞれ「何が違うの?」って感じなんだよね。
知ってる人にとっては気にもならないんだろうけど、知らない人にとってはこういう些細な表現が問題なんだ。
「主キー」と「プライマリキー(primary key)」について
「主キー」と「プライマリキー(primary key)」は同じ意味。
「主キー」は「ユニーク」である。要は他の行と重複しない。
また、「主キー」は「値無し」はNG。
つまり「主キー」は「ユニーク」な値が必ず必要。
設定は「CREAT TABLE」で設定しておく。
※あとで、変更できるかは未調査のため知らない。
- CREATE TABLE [テーブル名] (
- [ラベル名1] [データ型] PRIMARY KEY,
- [ラベル名2] [データ型]
- )
- WITHOUT OIDS;
上記は、[ラベル名1]を「主キー」にしただけ。
使いドコはわからないけど「ルール」を定義するなら下記。
- CREATE TABLE [テーブル名] (
- [ラベル名1] [データ型],
- [ラベル名2] [データ型],
- CONSTRAINT [ルール名] PRIMARY KEY ([ラベル名1])
- )
- WITHOUT OIDS;
連番でユニークIDを自動割振りするならシーケンスとCONSTRAINTを使う。
- CREATE TABLE [テーブル名] (
- [ラベル名1] [データ型] DEFAULT nextval(‘[シーケンス名]’::regclass),
- [ラベル名2] [データ型],
- CONSTRAINT [ルール名] PRIMARY KEY ([ラベル名1])
- )
- WITHOUT OIDS;
シーケンスを作るのが面倒だから「serial」を使う。
※これも使い分けする必要があると思うんだけど、現状は気にしない。
- CREATE TABLE [テーブル名] (
- [ラベル名1] serial,
- [ラベル名2] [データ型],
- CONSTRAINT [ルール名] PRIMARY KEY ([ラベル名1])
- )
- WITHOUT OIDS;