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「基本」型の複合ではなく、問題の型が複合型であるためですか?

UPDATE 2015-02-10 タイトルを更新し、サンプルを目前の問題により近づけるようにしました。CREATE TYPE foo AS OBJECTつまり、Postgres Plus Advanced Server 内には、 <--- という形式で型を作成するための追加の構文があり、その構文が問題の根源です。複合型の作成時に属性を変更することはできません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 に答える