PostgreSQL で、複数テーブルで同一のsequenceを使ってキーを作成

| コメント(0) | トラックバック(0)




これまだ試してないんだけど、いわゆる世代別にわけたテーブルを使ってるとして



item_200602
item_200601
item_200512
item_200511
...

これら全てに通しで使えるSERIAL PRIMARY KEYを貼りたいのね。この場合、テーブルを作る時にこんな感じでいいのかな



CREATE SEQUENCE item_global_id_seq;
CREATE TABLE item_200602 (
id INTEGER NOT NULL DEFAULT nextval('item_global_id_seq') PRIMARY KEY,
...
);
CREATE TABLE item_200601 (
id INTEGER NOT NULL DEFAULT nextval('item_global_id_seq') PRIMARY KEY,
...
);

で、これでINSERTするとitem_200602とitem_200601とでかぶるIDはなくなる(はず)でいいのかな。っていうか、違うな。なんかこの場合は継承を使わないとユニークキーにならないような気がする。こっちか?



CREATE TABLE item (
id SERIAL PRIMARY KEY
...
);
CREATE TABLE item_200612 () INHERITS item;

これだと確かPKはitemの中で保存されるよーな。


Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ