关注blog of Rob Conery我在Postgres数据库的表格中有一组唯一ID。
现在,使用这些唯一ID,有没有办法查询数据库中的行而不知道它在哪个表中?或者可以将这些表编入索引,以便如果当前表中的行不可用,我只是增加索引,我可以查询下一个表?
答案 0 :(得分:0)
简而言之 - 如果你没有为此做好准备 - 那么不。你可以通过生成自己的uuid来做好准备。请看here。例如PG有维护秩序的uuid。 uuid v5也有名称空间。所以你可以建立层次结构。然而,这是通过散列命名空间来完成的,而且我不知道在PG内部做相反的工具。
答案 1 :(得分:0)
如果您事先知道所有可能的表,您可以准备一个查询,该查询只需 UNION
对所有表进行带标记类型的搜索。如果有两个名为 comments
和 news
的表,您可以执行以下操作:
PREPARE type_of_id(uuid) AS
SELECT id, 'comments' AS type
FROM comments
WHERE id = $1
UNION
SELECT id, 'news' AS type
FROM news
WHERE id = $1;
EXECUTE type_of_id('8ecf6bb1-02d1-4c04-8875-f1da62b7f720');
可以通过查询 pg_catalog.pg_tables
并动态生成相关查询来自动生成此内容。