Postgres Plus Advanced Server (PPAS) 9.5 是不是支持将属性更改(删除/添加)复合对象类型?

Posted

技术标签:

【中文标题】Postgres Plus Advanced Server (PPAS) 9.5 是不是支持将属性更改(删除/添加)复合对象类型?【英文标题】:Does Postgres Plus Advanced Server (PPAS) 9.5 support altering (dropping/adding) attributes to composite object types?Postgres Plus Advanced Server (PPAS) 9.5 是否支持将属性更改(删除/添加)复合对象类型? 【发布时间】:2016-02-10 07:46:49 【问题描述】:

根据我对ALTER TYPE 的 PostgreSQL 文档的阅读,我应该能够做到以下几点:

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 年 2 月 10 日更新 我更新了标题,样本更接近手头的问题。简而言之,在 Postgres Plus Advanced Server 中,还有用于创建类型的附加语法,格式为 CREATE TYPE foo AS OBJECT AS OBJECT。

【问题讨论】:

看起来像是打字错误!您正在创建 combbar(在第 2 行),然后期望 compbar 存在(在第 3 行),这显然不会! 打错字了……我已经改正了。 我将问题退回到之前的版本。更改问题以隐藏原始错误会使答案看起来很愚蠢,而不是问题,恕我直言。 @wildplasser 它没有隐藏原始错误 - 为了清晰起见,它正在更新。最初的错误完全是另外一回事。说真的,要么用错字标志关闭问题,这样我就可以用更好的打字技巧重新提交,或者让我修复它...... 如果我有答案(如我的更新),协议是什么?把它作为问题的一部分,还是提交我自己的答案? 【参考方案1】:
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 似乎运行 fine。

【讨论】:

以上是关于Postgres Plus Advanced Server (PPAS) 9.5 是不是支持将属性更改(删除/添加)复合对象类型?的主要内容,如果未能解决你的问题,请参考以下文章

Advanced Configuration Tricks

我在 Xcode 的自动布局部分的底部没有看到 iPhone 6、6S 尺寸来调整我的视图。我只看到 4s、SE、7 和 7 Plus 尺寸

plus maps实时定位

如何从 Github Codespaces 连接到 Postgres

将选择值插入 postgres 表

SQL Plus 和“常规”SQL 之间的区别?