有没有办法通过 id 引用表。本质上,该表包含属于多个表之一的行。
例如我需要在表 D
的行中引用表 A
或 B
或 C
以便我知道哪个表加入。
我假设如果没有速记方式从外部引用表,那么唯一的选择就是存储表的名称。
最佳答案
表格有一个“速记引用”:object identifier - 目录表pg_class
的OID。简单获取方法:
SELECT 'schema_name.tbl_name'::regclass
但是,请不要将其保留在您的用户表中。系统表的 OID 在转储/恢复周期中不稳定。
此外,普通 SQL 语句不允许参数化表名称。因此,您必须克服重重困难才能在查询中使用您的想法。要么 dynamic SQL或带有 CASE
语句的多个 LEFT JOIN ...可能会很昂贵。
关于sql - 通过id查看表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26620225/