2010年12月 4日

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

その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;
のような感じにすれば良いはず。


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


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


投稿者 xml-rpc : 2010年12月 4日 23:25
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/100581
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。