pg_get_viewdef()

用于生成视图定义的函数

pg_get_viewdef() 是一个系统函数,用于生成重新创建指定视图或物化视图所需的 SQL。

pg_get_viewdef()PostgreSQL 6.4 中添加。

用法

pg_get_viewdef ( view oid [, pretty boolean ] ) → text
pg_get_viewdef ( view oid, wrap_column integer ) → text
pg_get_viewdef ( view text [, pretty boolean ] ) → text

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

第三种变体已弃用。

更改历史记录

示例

pg_get_viewdef() 的基本用法示例,以下为视图定义

postgres=# CREATE TABLE foo (
             id INT NOT NULL,
             val TEXT,
             ts TIMESTAMP WITH TIME ZONE
           );
CREATE TABLE

postgres=# CREATE VIEW bar AS
             SELECT *
               FROM foo
              WHERE ts >= '2022-01-01';
CREATE VIEW

基本形式返回视图定义的详细渲染,就像 pg_dump 输出的那样

postgres=# SELECT pg_get_viewdef('bar'::regclass);
                             pg_get_viewdef
-------------------------------------------------------------------------
  SELECT foo.id,                                                        +
     foo.val,                                                           +
     foo.ts                                                             +
    FROM foo                                                            +
   WHERE (foo.ts >= '2022-01-01 00:00:00+09'::timestamp with time zone);
(1 row)

可选的 pretty 标志会导致更简洁的版本,主要避免嵌套括号

postgres=# SELECT pg_get_viewdef('bar', true);
                            pg_get_viewdef
-----------------------------------------------------------------------
  SELECT foo.id,                                                      +
     foo.val,                                                         +
     foo.ts                                                           +
    FROM foo                                                          +
   WHERE foo.ts >= '2022-01-01 00:00:00+09'::timestamp with time zone;
(1 row)

pg_get_viewdef() 的第二个版本允许提供一个整数值,该值尝试将行合并到提供的数值为止

postgres=# SELECT pg_get_viewdef('bar'::regclass, 30);
                            pg_get_viewdef
-----------------------------------------------------------------------
  SELECT foo.id, foo.val,                                             +
     foo.ts                                                           +
    FROM foo                                                          +
   WHERE foo.ts >= '2022-01-01 00:00:00+09'::timestamp with time zone;
(1 row)

postgres=# SELECT pg_get_viewdef('bar'::regclass, 50);
                            pg_get_viewdef
-----------------------------------------------------------------------
  SELECT foo.id, foo.val, foo.ts                                      +
    FROM foo                                                          +
   WHERE foo.ts >= '2022-01-01 00:00:00+09'::timestamp with time zone;
(1 row)

分类

系统目录系统函数

另请参阅

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

反馈

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