ふと、PostgreSQLでシーケンスの情報を取得する必要ができたので調べてみたらしい。 そもそもPostgreSQLにおけるシーケンスは、CREATE SEQUENCE文を使って自分で定義するか、SERIAL(SERIAL4)型やBIGSERIAL(SERIAL8)型の列を含むテーブルの作成によって自動的に生成される。 いずれにしても、シーケンスの現在の値を知りたいといった場合によく出てくるのが、nextval、currval、setvalの各関数である。 しかし、currval関数は「そのセッション内で」「最後に生成された値」を取得するもので、nextvalがそのセッション内で呼び出されていないと使えない。が、そんなことのためにシーケンスの値は更新したくない。 ということで、それらの関数に依存しないものについて。 実際の確認のための事前準備 まず、以下のようなSQL文を実行し、テーブル