首页 > 解决方案 > 从 POSTGRESQL DB 获取原始视图定义

问题描述

我创建了一个具有以下定义的视图:

CREATE TABLE t1(id int,name varchar);
INSERT INTO t1 values(1,'n1'),(2,'n2');
CREATE VIEW v2 AS SELECT * FROM t1 WHERE name = 'n1';

但是当我在 pg_views 表中检查 postgresql DB(9.5) 中的定义时,它正在以下列方式进行修改:

postgres=# select * from pg_views where schemaname = 'sc1' and viewname = 'v2';
     schemaname | viewname | viewowner |               definition
    ------------+----------+-----------+-----------------------------------------
     sc1        | v2       | postgres  |  SELECT t1.id,                         +
                |          |           |     t1.name                            +
                |          |           |    FROM sc1.t1                         +
                |          |           |   WHERE ((t1.name)::text = 'n1'::text);
    (1 row)

我可以在列名之前添加表名,但我不想要额外的 '::text' 部分。有没有办法实现这一点(就像我可以查询的任何其他系统表一样)

标签: viewpostgresql-9.5

解决方案


无法从 Postgres 系统表中获取“原始”视图定义。
Postgres存储解析后的版本。


推荐阅读