非互換
Fujitsu Enterprise Postgres 15では、行集合を返す関数の結果に依存するビューやルールが存在する場合、依存される列の削除を制限します。
行集合を返す関数の結果に依存するビューやルールが存在する場合に、依存される列を削除することができます。
postgres=# CREATE FUNCTION tt14f() RETURNS SETOF tt14t AS postgres-# $$ postgres$# declare postgres$# rec1 record; postgres$# begin postgres$# for rec1 in select * from tt14t postgres$# loop postgres$# return next rec1; postgres$# end loop; postgres$# end; postgres$# $$ postgres-# language plpgsql; CREATE FUNCTION postgres=# CREATE VIEW tt14v AS SELECT t.* FROM tt14f() t; CREATE VIEW postgres=# ALTER TABLE tt14t DROP COLUMN f4; ALTER TABLE postgres=# SELECT * FROM tt14v; ERROR: attribute 4 of type record has been dropped (19187) postgres=#
行集合を返す関数に依存しているビューやルールがある場合に、依存される列を削除することができません。
postgres=# CREATE FUNCTION tt14f() RETURNS SETOF tt14t AS postgres-# $$ postgres$# declare postgres$# rec1 record; postgres$# begin postgres$# for rec1 in select * from tt14t postgres$# loop postgres$# return next rec1; postgres$# end loop; postgres$# end; postgres$# $$ postgres-# language plpgsql; CREATE FUNCTION postgres=# CREATE VIEW tt14v AS SELECT t.* FROM tt14f() t; CREATE VIEW postgres=# ALTER TABLE tt14t DROP COLUMN f4; ERROR: cannot drop column f4 of table tt14t because other objects depend on it DETAIL: view tt14v depends on column f4 of table tt14t HINT: Use DROP ... CASCADE to drop the dependent objects too. postgres=#
対処方法
ありません。