view - 从 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' 部分。有没有办法实现这一点(就像我可以查询的任何其他系统表一样)
解决方案
您无法从 Postgres 系统表中获取“原始”视图定义。
Postgres只存储解析后的版本。
推荐阅读
- css - 如何处理以大百分比(300%)放大的多个屏幕分辨率
- wpf - 在活动窗口或网格内部而不是 MainWindow 上查找控件
- python - 使用 live stereo3d 图像在迷宫中进行路径检测和进展
- javascript - 如何将二进制图像从 json 响应保存到 S3 存储桶
- reactjs - React路由器:构建链接时如何处理match.url中的尾随/?
- c++ - 如何避免使用 C++ 宏重新声明变量
- apache - 在 Kubernetes 中运行简单的 hello world 静态 http 应用程序
- angular - ngx-charts 图例位置错误
- outlook - 自动加载 Office 加载项 Outlook
- python - 使用未知数量的按钮