日々学んだことを残しておこう。きっと未来の自分が探しにくる。 (ただ忘れっぽいだけです…)

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

-------- : スポンサー広告 :
Pagetop

DB PostgreSQL シーケンス


シーケンス(SEQUENCE)は、PostgreSQLで、自動的に連番を生成する仕組みです。
ユーザIDなどユニークのIDをつけたい時に使用します。

例:テーブル名userinfo
----------------------
userid | name
---------+------------
1 | taro
2 | jiro
----------------------


シーケンスの作成はsql文で作成します。(useridに対してのシーケンス)
create sequence userid_seq;


データを追加する場合
insert into userinfo (userid, name) values (nextval('userid_seq'), 'saburo');


自動的にuseridが3になってsaburoがinsertされました。
----------------------
userid | name
---------+------------
1 | taro
2 | jiro
3 | saburo
----------------------


ちなみに次のシーケンス値取得する関数がこれ。
nextval('userid_seq')


他にも、currval('シーケンス名')、setval('シーケンス名',値)がありますが詳細設定はこちらのサイトが分かりやすいのでどうぞ。
http://ash.jp/db/pg_use.htm


なんか、ちょっと面倒だよなって思っていたら、ありました!
勝手にシーケンス作ってくれちゃう型。
serial型
今回の場合、useridをserial型で定義してあげれば、データ追加もこれでOKだって。
insert into userinfo (name) values ('saburo');



ふ~ん。
ちょっと疑問が。
serial型って、実際は何型ベースなんだろう?
っというのは、最大値はいくつまで可能かなと。

ちょっと調べる。
http://osb.sraoss.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/datatype.html

useridをbigint型にした場合、8バイト符号付整数なので、約18桁までOK。
しかし、serial型にした場合、4バイトなので、0 から +2147483647までOK。

21億。

ユーザ数が21億人超えたら対応出来ないじゃないかー
超えねーか…

まっ、serial型でも問題なさそうだね。
ユーザ数21億超えたので、想定外でしたって言いたいね(笑)


(参考サイト)
PostgreSQL で連番の数字のフィールドを作る方法 (sequence について)
http://www.abe-tatsuya.com/web_prog/postgresql/seaquence.php
関連記事

2011-05-20 : DB : コメント : 0 : トラックバック : 0
Pagetop
コメントの投稿
非公開コメント

Pagetop
« next  ホーム  prev »

広告

読みたいと思っている書籍

Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく Amazon Web Services 定番業務システム12パターン 設計ガイド イラストで学ぶ 機械学習 最小二乗法による識別モデル学習を中心に (KS情報科学専門書) イラストで学ぶ ディープラーニング (KS情報科学専門書)

カウンタ

メールフォーム

名前:
メール:
件名:
本文:

GoogleTranslate

管理人のつぶやき

人気記事ランキング

カテゴリ

openclose

ブログ内検索

全記事表示リンク

全ての記事を表示する

ブログパーツ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。