[pgsql-jp: 26970] Re: Need info about 7.3( inherit cascade & array search)

Tatsuo Ishii t-ishii @ sra.co.jp
2002年 8月 10日 (土) 12:40:35 JST


石井です.

> で、だいぶ前に、cascadeしたテーブル(子)をinheritしたテーブル(孫)で
> たとえばdelete on cascadeで親のあるタプルを削っても孫の該当部分が
> 消えてくれないと言う話題を投稿した際、まだ未実装なので7.3くらいまで
> 待たないとダメという回答を頂いた記憶があります。

現時点では制約の継承は実装されていません.とりあえず,手動で外部キーを
孫に追加するしかなさそうです.

このあたりの議論はcurrentのdoc/TODO.detail/inheritanceを見てください.

あまり関係ないですが,7.3では外部キーをALTER TABLEでDROPできるのが嬉し
いです.また,依存されているオブジェクトがなんの警告もなしにDROPされる
ことがなくなったのも嬉しいです.このあたり,ほとんどのDROP系のコマンド
にCASCADE,RESTRICTオプションが追加されています.たとえば,

CREATE TABLE t1(i INTEGER PRIMARY KEY);
CREATE TABLE t2(j INTEGER REFERENCES t1 ON DELETE CASCADE);

っていうのがあって,ここでt1をDROPしようとすると,

NOTICE:  constraint $1 on table t2 depends on table t1
ERROR:  Cannot drop table t1 because other objects depend on it
	Use DROP ... CASCADE to drop the dependent objects too

と怒られます.あえてt1をDROPしたければ,DROP TABLE t1 CASCADE としない
といけません.

逆に,SERIAL型を使っているテーブルで,テーブルを消したのにシーケンスだ
け残っている,なんて間抜けなことは起きなくなりました.
--
Tatsuo Ishii



pgsql-jp メーリングリストの案内