pg_table_is_visible()

用于确定表是否在当前搜索路径中可见的函数

pg_table_is_visible() 是一个系统函数,用于确定关系(表、视图或物化视图)是否在当前模式搜索路径中可见。

pg_table_is_visible()PostgreSQL 7.3 中添加。

用法

pg_table_is_visible ( table oid ) → boolean

table 参数可以作为文本值提供,其中包含 regclass OID 别名,其中包含关系的名称。在这种情况下,名称应作为模式限定值提供(例如 "someschema.sometable"),否则如果关系存在但不在当前搜索路径中可见,则会引发 ERROR

更改历史记录

示例

以下是如何使用 pg_table_is_visible() 的示例,假设以下关系是在 foo 模式中创建的

postgres=# CREATE TABLE foo.bar (id int);
CREATE TABLE

postgres=# CREATE VIEW foo.baz AS SELECT * FROM foo.bar;
CREATE VIEW

postgres=# CREATE MATERIALIZED VIEW foo.bop AS SELECT * FROM foo.bar;
SELECT 0

按原样,在当前搜索路径中没有创建的关系可见

postgres=# SHOW search_path;
   search_path   
-----------------
 "$user", public
(1 row)

postgres=# SELECT pg_table_is_visible('foo.bar'::regclass);
 pg_table_is_visible 
---------------------
 f
(1 row)

postgres=# SELECT pg_table_is_visible('foo.baz'::regclass);
 pg_table_is_visible 
---------------------
 f
(1 row)

postgres=# SELECT pg_table_is_visible('foo.bop'::regclass);
 pg_table_is_visible 
---------------------
 f
(1 row)

如果关系不存在,或者存在但未进行模式限定并且不在当前搜索路径中,则会引发 ERROR

postgres=# SELECT pg_table_is_visible('foo'::regclass);
ERROR:  relation "foo" does not exist
LINE 1: SELECT pg_table_is_visible('foo'::regclass);

postgres=# SHOW search_path;
   search_path   
-----------------
 "$user", public
(1 row)

postgres=# SELECT pg_table_is_visible('bar'::regclass);
ERROR:  relation "bar" does not exist
LINE 1: SELECT pg_table_is_visible('bar'::regclass);

分类

模式(命名空间)系统函数

另请参阅

pg_collation_is_visible()pg_function_is_visible()pg_opclass_is_visible()pg_operator_is_visible()pg_opfamily_is_visible()pg_type_is_visible()

反馈

提交任何关于 "pg_table_is_visible()" 的评论、建议或更正 此处