postgresql - 从表名确定模式

时间:2018-03-22 11:04:19

标签: sql postgresql-9.6

我有多个模式,每个模式都包含一个名为“t”的表。

如何在?

中找出评估“select * from t”的模式

示例:

create schema one;
create schema two;
create schema three;
create table one.t(i int);
create table two.t(i int);

set search_path to one,two;
select magic_function('t');  -- returns 'one'

set search_path to two,one;
select magic_function('t');  -- returns 'two'

set search_path to three,two,one;
select magic_function('t');  -- returns 'two'

在这种情况下什么是“magic_function”?

1 个答案:

答案 0 :(得分:2)

这里你不需要fn() - 只需plain选择:

t=# set search_path to one,two;
SET
t=# select relname, relnamespace::regnamespace from pg_class where oid = 't'::regclass;
 relname | relnamespace
---------+--------------
 t       | one
(1 row)

t=# set search_path to two,one;
SET
t=# select relname, relnamespace::regnamespace from pg_class where oid = 't'::regclass;
 relname | relnamespace
---------+--------------
 t       | two
(1 row)
当然,如果你要求

,它是可以包装的