pg_get_indexdef()

用于生成索引定义的函数

pg_get_indexdef() 是一个系统函数,用于生成重新创建指定索引所需的 SQL 代码。

pg_get_indexdef()PostgreSQL 6.4 中添加。

用法

pg_get_indexdef ( index oid [, column integer, pretty boolean ] ) → text

请注意,返回的文本是根据元数据重建的,而不是原始 CREATE INDEX 命令的逐字文本。

更改历史记录

示例

假设以下表定义

postgres=# CREATE TABLE foo (id INT PRIMARY KEY);
CREATE TABLE

postgres=# \d foo
                Table "public.foo"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 id     | integer |           | not null | 
Indexes:
    "foo_pkey" PRIMARY KEY, btree (id)

pg_get_indexdef() 可以为隐式创建的 foo_pkey 索引生成 CREATE INDEX 命令,如下所示:

postgres=# SELECT pg_get_indexdef('foo_pkey'::regclass);
                       pg_get_indexdef                       
-------------------------------------------------------------
 CREATE UNIQUE INDEX foo_pkey ON public.foo USING btree (id)
(1 row)

如果 pretty 参数为 TRUE,则可以创建不太冗长的定义(这需要将 column 参数提供为 0

postgres=# SELECT pg_get_indexdef('foo_pkey'::regclass, 0, true);
                   pg_get_indexdef                    
------------------------------------------------------
 CREATE UNIQUE INDEX foo_pkey ON foo USING btree (id)
(1 row)

如果指定了 column 参数,则仅返回该位置中匹配列的名称。

postgres=# SELECT pg_get_indexdef('bar_cols'::regclass) ;
                       pg_get_indexdef                        
--------------------------------------------------------------
 CREATE INDEX bar_cols ON public.bar USING btree (col1, col2)
(1 row)

postgres=# SELECT pg_get_indexdef('bar_cols'::regclass, 1, false),
                  pg_get_indexdef('bar_cols'::regclass, 2, true);
 pg_get_indexdef | pg_get_indexdef 
-----------------+-----------------
 col1            | col2
(1 row)

在这种情况下,pretty 参数无效。

如果提供了无效的 column 参数,则返回空字符串。

postgres=# SELECT pg_get_indexdef('bar_cols'::regclass, -1, true);
 pg_get_indexdef 
-----------------
 
(1 row)

分类

索引系统目录系统函数

另请参阅

pg_get_constraintdef()pg_get_functiondef()pg_get_ruledef(),pg_get_statisticsobjdef(),pg_get_triggerdef()pg_get_viewdef()

反馈

提交任何关于 "pg_get_indexdef()" 的评论、建议或更正 此处