维护从前雇员编写的代码时,发现了一段我无法理解的 SQL 代码:
CREATE OR REPLACE VIEW my_view AS Not a view
官方文档中没有相关信息,我一直在寻找关于这个问题的信息,但是一无所获。
有什么提示吗?
维护从前雇员编写的代码时,发现了一段我无法理解的 SQL 代码:
CREATE OR REPLACE VIEW my_view AS Not a view
官方文档中没有相关信息,我一直在寻找关于这个问题的信息,但是一无所获。
有什么提示吗?
视图已删除。
您的脚本是由一个使用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。唯一确定的结论是您的脚本不是最新的(与数据库当前内容不一致)。为了解决问题,您应该以SQL格式转储(dump)模式,例如:pg_dump --schema-only --format=plain my_database > my_database.dump