[pgsql-jp: 40587] Re: グループ毎に自動採番したいのですが

yum yum @ ishina.net
2010年 12月 4日 (土) 23:25:31 JST


その1. グループごとのシーケンスを作る
CREATE SEQUENCE s_id_xxxxx_seq ...

INSERT時には、このシーケンスから値を引っ張ってくるようにすれば良い。
グループ数が少なくて、固定ならばこれが一番楽。


その2. ID管理テーブルを作る
CREATE TABLE grp_s_id_tbl (
group_id int not null PRIMARY KEY,
max_s_id int not null default 0
);

BEGIN;
UPDATE testes SET max_s_id=max_s_id+1 WHERE group_id = :groupID;
INSERT INTO users (..., s_id, ...)
SELECT ..., max_s_id, ... FROM grp_s_id_tbl WHERE group_id = :groupID;
COMMIT;
のような感じにすれば良いはず。


個人的には「そんな面倒なことはしない」を推します。


-----------
ゆむ


pgsql-jp メーリングリストの案内