シリアル型とシーケンス

重複

 PGSQL=> CREATE TABLE t1 ( id serial primary key, n int );
 PGSQL=> INSERT INTO t1 ( n ) VALUES ( 10 );
 PGSQL=> INSERT INTO t1 ( id, n ) VALUES ( 3, 100 );
 PGSQL=> INSERT INTO t1 ( n ) VALUES ( 11 );
 PGSQL=> SELECT * FROM t1;
  id |  n
 ----+-----
   1 |  10
   3 | 100
   2 |  11
 (3 行)
 
 PGSQL=> INSERT INTO t1 ( n ) VALUES ( 12 );
 ERROR:  重複キーが一意性制約"t1_pkey"に違反しています
 DETAIL:  キー (id)=(3) はすでに存在します
  • シリアル型のカラムに(シーケンスを使わず)手で値を投入すると、いずれ重複する。
  • シリアル型かつ主キーの場合は、ユニーク制約に違反するので、エラーになる。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2015-05-18 (月) 21:30:49