[pgsql-jp: 37584] Re: 被外部参照テーブル削除時の制約の遅延について

ISHIDA Akio iakio @ mono-space.net
2006年 10月 18日 (水) 23:56:28 JST


こんにちは。石田@苫小牧市と申します。

06/10/18 に kishino<kishino @ jins.co.jp> さんは書きました:
> 岸野と申します。
>
> 上記の SQLで、テーブル「test」は「test_sub」
> から参照されています。
>
> 削除時の挙動は「RESTRICT」ですので、「test」
> のデータを削除しようとするとエラーになります。
>
> が、「DEFERRABLE INITIALLY DEFERRED」 と指定
> してあるので、私の理解では制約の検査はトラン
> ザクションの終了時に行われることを期待してい
> ます。
>
> つまり上記 SQLは問題なく「commit」される予定
> なのですが、実際には一つ目の「delete」で制約
> のエラーになってしまいます。
>
>
> これは正しい動作なのでしょうか。
> 私が何か勘違いをしているのでしょうか。

RESTRICT は遅延できません。
NO ACTION が岸野さんが期待されている動作をすると思います。

http://www.postgresql.jp/document/current/html/sql-createtable.html
の RESTRICT と NO ACTION に関する説明をご覧下さい。

-- 
ISHIDA Akio <iakio @ mono-space.net/ishida @ cycleof5th.com>



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