维护前员工的代码,发现了一条我无法理解的SQL:
CREATE OR REPLACE VIEW my_view AS Not a view
官方文档上没有任何信息,我一直在寻找有关此查询的信息,但无济于事。
任何提示?
答案 0 :(得分:3)
视图已删除。
您的脚本是由使用pg_get_viewdef(view_oid)
的应用程序生成的。当没有给定oid的视图时,该函数返回字符串not a view
。简单测试:
create view my_view as select 1;
select oid
from pg_class
where relname = 'my_view';
oid
--------
151388
(1 row)
select pg_get_viewdef(151388);
pg_get_viewdef
----------------
SELECT 1;
(1 row)
drop view my_view;
select pg_get_viewdef(151388);
pg_get_viewdef
----------------
Not a view
(1 row)
请注意并不意味着 my_view
不存在。如果您重新创建视图,它将有另一个oid。唯一确定的结论是您的脚本不是最新的(它与数据库的当前内容不一致)。作为补救措施,您应该dump SQL格式的架构,例如
pg_dump --schema-only --format=plain my_database > my_database.dump