有没有办法通过id引用表。本质上,该表包含属于许多表之一的行。
e.g。我需要在表A
的行中引用表B
或C
或D
,以便我知道要加入哪个表。
我假设如果没有外部引用表的简写方法,那么唯一的选择是存储表的名称。
答案 0 :(得分:2)
表格有一个“速记参考”:object identifier - 目录表pg_class
的OID。获得它的简单方法:
SELECT 'schema_name.tbl_name'::regclass
但是,不会在用户表中保留此内容。系统表的OID在转储/恢复周期之间不稳定。
此外,纯SQL语句不允许参数化表名。所以你必须跳过箍来在查询中使用你的想法。 dynamic SQL或多个LEFT JOIN与CASE
语句......可能很昂贵。