シーケンス操作関数とは…
参考:ここ
“PostgreSQLのシーケンスオブジェクトに対し演算を行う関数。シーケンスオブジェクト(シーケンスジェネレータとも単にシーケンスとも呼ばれます)とはCREATE SEQUENCEで作成される1行の特別なテーブルです。”
テーブルなんですねえ。
シーケンス関数一覧
- nextval(regclass) …
- currval(regclass) ….nextval後に
- lastval()
- setval(regclass, bright)
- setval(regclass, bright, boolean)
\よくわかんないからやってみた。/
・SELECT currval(‘test_seq’::regclass);
・SELECT lastval();
※それぞれを別セッションで実行
currvalとlastvalはnextvalの後とか同じセッション内で実行しないと
「セッションでまだ定義されてません」
ってでますね。
(まとめ)
currvalとlastvalは同セッション内にてnextvalで定義した後に機能する。
nextvalで得られた値を返す。
is_calledフラグが「はい」 → 最終値 + 増加数
is_calledフラグが「いいえ」 → 最終値
is_calledフラグ…..呼ばれた時に増加数分増加する/しない
currvalとlastvalって何が違うんやろ?
・lastval…シーケンスを指定するところがないです!
同セッション内で複数のシーケンスをnextvalした時、一番最初にnextvalしたシーケンスの返り値を得ることができました。
・currval…シーケンスが指定できますね。
regclassってなん?
参考:ここ
OID(オブジェクト識別子)っていうシステムテーブルのプライマリーキーの別名らしい。
よくわからんので、わかり次第まとめます!