この匿名の [〜#〜] do [〜#〜] コード機能を使用してコードを実行しています。失敗すると、加えられたすべての変更が破棄され、データベースが開始前の状態にロールバックされることを確認しています。この機能を停止するにはどうすればよいですか?
トランザクション内にない限り、DO内でコミットできます。
create table foo (z double precision);
do language PLPGSQL $$
declare i int;
begin
for i in 1 .. 12 loop
insert into foo values (sqrt(10-i));
commit;
end loop;
end;$$;
ERROR: cannot take square root of a negative number CONTEXT: SQL statement "insert into foo values (sqrt(10-i))" PL/pgSQL function inline_code_block line 1 at SQL statement
select count(*) from foo;
10