0

根据我对 PostgreSQL 文档的阅读,ALTER TYPE我应该能够执行以下操作:

CREATE TYPE compfoo AS OBJECT (f1 int, f2 text);
CREATE TYPE compbar AS OBJECT (f1 int, f2 compfoo);
ALTER TYPE compbar DROP ATTRIBUTE f2;
ALTER TYPE compbar ADD ATTRIBUTE f2 varying(1000);
ALTER TYPE compbar ADD ATTRIBUTE f3 compfoo;

但是,当我尝试它时,我收到以下错误:

ERROR: ALTER TYPE ADD/DROP COLUMN statement not supported for object types

我在这里想念什么?是否有允许我这样做的服务器配置?是因为所讨论的类型是复合OBJECT类型,而不是“基本”类型的复合吗?

更新 2015-02-10 我已经更新了标题,样本更接近手头的问题。简而言之,在 Postgres Plus Advanced Server 中,还有用于创建类型的附加语法,格式为CREATE TYPE foo AS OBJECT<--- 该语法是问题的根源。创建复合类型时不能更改属性AS OBJECT

4

1 回答 1

0
CREATE TYPE compfoo AS (f1 int, f2 text);
CREATE TYPE combbar AS (f1 int, f2 compfoo);
ALTER TYPE compbar DROP ATTRIBUTE f2;
---------------^ maybe you should write combbar?

为了清楚起见,您正在定义一个名为“combbar”的类型,然后您尝试更改一个名为“compbar”的类型。

更新

除了那个错字之外,SQL 似乎运行良好

于 2016-02-10T07:57:37.103 回答