我有一个带有某些架构的PostgreSQL数据库,如下所示:
My_Database
|-> Schemas
|-> AccountA
|-> AccountB
|-> AccountC
|-> AccountD
|-> AccountE
.
.
.
|-> AccountZ
所有模式都有一个名为的表product
,该表有一个名为的列title
。我想知道是否有可能执行select语句从具有特定条件的所有模式中检索所有记录。
到目前为止,我发现的唯一方法是逐个帐户运行查询帐户,如下所示。
SET search_path TO AccountA;
SELECT title FROM product WHERE title ILIKE '%test%';
模式是动态创建的,因此我不知道它们的名称或存在的数量。
随着产业喜欢@Denis提到,这将是非常简单的。同样适用于Postgres 8.4。请务必考虑这些限制。
基本上,您将拥有一个主表,我想是在一个主模式中:
CREATE TABLE master.product (title text);
各种模式中的所有其他表都继承自该表,可能会添加更多本地列:
CREATE TABLE a.product (product_id serial PRIMARY KEY, col2 text)
INHERITS (master.product);
CREATE TABLE b.product (product_id serial PRIMARY KEY, col2 text, col3 text)
INHERITS (master.product);
等等。
这些表不必共享相同的名称或架构。
然后,您可以一次查询所有表:
SELECT title, tableoid::regclass::text AS source
FROM master.product
WHERE title ILIKE '%test%';
tableoid::regclass::text
?
这是分辨每一行来源的便捷方法。细节:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句