我创建了一个具有以下定义的视图:
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'部分。无论如何要实现这一点(就像我可以从中查询以获取原始定义的任何其他系统表一样)
您可以not从Postgres系统表中获得“原始”视图定义。Postgres only存储已解析的版本。