嗨,我对PostgresSQL非常陌生。
我创建了一些表并设法改变了表和列,但我似乎无法掌握继承的部分。
我一直在努力解决这个问题。
我创建了一个表,但是我发现我需要创建一个继承其他9个表的表,当这9个其他表被更改时,newely创建的表也必须进行更改。
我已经尝试了几个步骤,但似乎要么缺少程序的一个重要部分,要么做错了。
我的步骤如下:
CREATE TABLE data."Test" (
"OID" integer,
"CMAID" integer,
"UpdateDate" timestamp without time zone,
"SG21CODE" character varying(21),
"ErfExtent" integer,
"ZoneBlocked" smallint,
"MunValue" integer,
"MunValueYear" integer,
"PurchasePrice" integer,
"PurchaseDate" timestamp without time zone,
"RegisteredDate" timestamp without time zone,
"ReportedSalePrice" integer,
"ReportedSaleDate" timestamp without time zone,
"BondHolder" character varying(32),
"BondAmount" bigint,
"DateIncluded" timestamp without time zone,
"SchemeNo" money,
geometry geometry(Geometry,3857),
"EUCat" text,
"UseCode" text,
"MUNCODE" text,
"SGUSAGE" text,
"ZoneDesc" text,
"Remainder" text,
"SiteOnly" text,
"RegStatus" text,
"Buyer" text,
"SaleStatus" text,
"SaleType" text,
"TitleDeed" text,
"PostCode" text,
"Address4" text,
"Address3" text,
"Address2" text,
"Address1" text,
"Ratepayer" text,
"OwnerIDNo" text,
"Owner" text,
"Zone" text,
"ErfUsage" text,
"Type" text,
"Suburb" text,
"SubSuburb" text,
"Complex" text,
"StreetName" text,
"Allotment" text,
"StreetNo" text,
"SchemeName" text,
"ErfNo" text,
version integer
);
SELECT *
FROM data."WC",data."NW",data."NC",data."MP",data."LP",data."KZN",data."GP",data."FS",data."EC"
INHERITS ("WC","NW","NC","MP","LP","KZN","GP","FS","EC");
出于某种原因,当我运行它时,它似乎只能运行,但是当我用一个表运行它时(花了一会儿)但是当我进入测试表时出现了表除了已创建的列之外,表中没有任何内容。
就像我说的,我对postgreSQL相对较新。 看它何时进入geoserver然后geoserver只读取测试表而不是所有9个表。但是如果我需要在9个表格中的任何一个表格中进行更改,主要的地理服务器表格会对更改进行更改,并覆盖旧更改的新更改。
答案 0 :(得分:1)
该查询甚至没有接近您的想法。 INHERITS会覆盖其中一个表中的列名,并且您将相互交叉连接9个表。无论如何,select语句中的INHERITS似乎完全没有文档,因此它可能是一个bug或一个特性,或者只是未定义的行为。
删除INHERITS子句并在FROM子句中添加UNION而不是隐式交叉连接。
SELECT * FROM data."WC"
UNION ALL
SELECT * FROM data."NW"
....