pg_get_serial_sequence()

用于确定列使用的序列名称的系统函数

pg_get_serial_sequence() 是一个系统函数,用于确定特定表列使用的序列的名称。

pg_get_serial_sequence()PostgreSQL 8.0 中添加。

用法

pg_get_serial_sequence ( table text, column text ) → text

请注意,表名将根据通常的 SQL 规则进行解析,这意味着表名(以及任何模式限定)必须适当地加引号;请参见下面的示例。

更改历史记录

示例

postgres=# CREATE TABLE foo (id SERIAL, val TEXT);
CREATE TABLE

postgres=# \d foo
                            Table "public.foo"
 Column |  Type   | Collation | Nullable |             Default             
--------+---------+-----------+----------+---------------------------------
 id     | integer |           | not null | nextval('foo_id_seq'::regclass)
 val    | text    |           |          | 

postgres=# SELECT pg_get_serial_sequence('foo', 'id');
 pg_get_serial_sequence 
------------------------
 public.foo_id_seq
(1 row)

postgres=# SELECT currval(pg_get_serial_sequence('foo','id'));
ERROR:  currval of sequence "foo_id_seq" is not yet defined in this session

postgres=# INSERT INTO foo VALUES(DEFAULT, 'bar');
INSERT 0 1

postgres=# SELECT currval(pg_get_serial_sequence('foo','id'));
 currval 
---------
       1
(1 row)

如果表和/或列名需要加引号,则必须像 SQL 标识符一样显式地为表名加引号,而列名必须作为文字字符串提供,例如:

postgres=# CREATE TABLE "FOO" ("ID" SERIAL, val TEXT);
CREATE TABLE

postgres=# SELECT pg_get_serial_sequence('"FOO"', 'ID');
 pg_get_serial_sequence 
------------------------
 public."FOO_ID_seq"
(1 row)

postgres=# SELECT pg_get_serial_sequence(quote_ident('FOO'), 'ID');
 pg_get_serial_sequence 
------------------------
 public."FOO_ID_seq"
(1 row)

分类

DDL序列系统函数

反馈

提交任何关于“pg_get_serial_sequence()”的评论、建议或更正 此处