PostgreSQL の SEQUENCE の実体はテーブルです。 CREATE SEQUENCE したときに SEQUENCE と同じ名前の 1 行だけの特殊なテーブルを作成します。
次のように \d で SEQUENCE の状態を確認することができます。
db=# \d test_sequence
Sequence "public.test_sequence"
Column | Type | Value
---------------+---------+---------------------
sequence_name | name | test_sequence
last_value | bigint | 9
start_value | bigint | 1
increment_by | bigint | 1
max_value | bigint | 9223372036854775807
min_value | bigint | 1
cache_value | bigint | 1
log_cnt | bigint | 26
is_cycled | boolean | f
is_called | boolean | t
SEQUENCE の実体はテーブルなので 次のように SQL の FROM 句に SEQUENCE 名を指定しても 中身を見ることができます。
db=# \x Expanded display is on. db=# SELECT * FROM public.test_sequence; -[ RECORD 1 ]-+-------------------- sequence_name | test_sequence last_value | 9 start_value | 1 increment_by | 1 max_value | 9223372036854775807 min_value | 1 cache_value | 1 log_cnt | 26 is_cycled | f is_called | t
PostgreSQL は view もテーブルとルールを使って実現していますが 少ない実装で多くの機能を実現するというのはカッコいいですね。