Postgres创建视图而不是视图

时间:2017-04-17 11:46:43

标签: sql postgresql

维护前员工的代码,发现了一条我无法理解的SQL:

CREATE OR REPLACE VIEW my_view AS Not a view

官方文档上没有任何信息,我一直在寻找有关此查询的信息,但无济于事。

任何提示?

1 个答案:

答案 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