[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 メーリングリストの案内