* シリアル型とシーケンス [#h8f55d86]
** 重複 [#s8b77b49]
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) はすでに存在します
- シリアル型のカラムに(シーケンスを使わず)手で値を投入すると、いずれ重複する。
- シリアル型かつ主キーの場合は、ユニーク制約に違反するので、エラーになる。