[pgsql-jp: 29539] Re: エラー発生時のトランザクションの動作について

ISHIDA Akio iakio @ pjam.jpweb.net
2003年 4月 1日 (火) 14:49:18 JST


こんにちは。石田@苫小牧市です。

瀬川 真 <segawa @ bwave.co.jp> wrote:
(2003/04/01 13:35)

>現在、PostgreSQL 7.2.3 を使用して機能の確認を行っております。
>
>下記のような順序で作業をした場合、1件もデータが挿入されません。
>(1)トランザクション発行
>(2)20件のデータをinsert
> →5件目のデータは、キー重複によりエラーとなるデータ
>  5件目以外は正常なデータ
>(3)コミット
>
>期待する動作としては、重複データのみ登録されず(当然ですが・・・)
>残りの19件分のデータに関しては登録されるようにしたいということです。
>※1件ずつコミットはしないという前提です。

私の知るかぎりでは、このような動作はできないと思いますが、
代替案としては、そもそもキーが重複したものは insert しないような
sql にしてしまう、という方法があります。

insert into tbl1 (p_key, f1, f2)
select 1, 'f1_data', 'f2_data'
 where not exists (
       select *
         from tbl1
        where p_key = 1)

--
ISHIDA Akio<iakio @ pjam.jpweb.net>




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