Open2
postgreSQL関連
Database Function内では明示的にトランザクションをはれない(postgresの仕様)
サンプル
DECLARE
BEGIN
FOR i IN 0..9 LOOP
INSERT INTO public.test (memo) VALUES (i::text);
IF i % 2 = 0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END LOOP;
RETURN;
END;
関数実行
SELECT public.test_function();
エラーになる
ERROR: 2D000: invalid transaction termination
CONTEXT: PL/pgSQL function test_function() line 7 at COMMIT
Note: A limit of 100 was applied to your query. If this was the cause of a syntax error, try selecting "No limit" instead and re-run the query.
fuctionの定義を出力する
SELECT pg_get_functiondef(oid)
FROM pg_proc
WHERE proname = 'test_function';
出力結果