0
おはよう、TRANSACTIONを使用した二重INSERT postgres
適切な分離レベルでTRANSACTIONを作成したいと思います。そのトランザクションでは、二重挿入を行いたいものがあり、失敗した場合は他のものが中止されます。
私はすでに作成したストアドプロシージャを持っている:トランザクションは関数内か、それは別の手順であればあるべき場合
create or replace function insert_into_answercomments(userid INTEGER, answerid INTEGER, body text)
returns void language plpgsql as $$
DECLARE result INTEGER;
insert into publications(body, userid)
VALUES (body, userid)
returning publications.publicationid AS publicationid INTO result;
insert into comments(publicationid) VALUES (result);
insert into answercomments(commentid, answerid) VALUES (result, answerid);
end $$;
私の疑いがあります。正しい隔離レベルで作成するにはどうすればよいですか。
親切にお礼申し上げます。
しかし、どのように私は、そのトランザクションを呼ぶだろうか?私はそれらの二重の挿入を行う必要があるたびに、私はどのようにプロシージャではない場合は、トランザクションを呼び出すだろうか? –
'' 'begin; select * from insert_into_answercomments(1,2); 終了; '' ' –
ありがとうございます。隔離レベルはどうですか?どのようなレベルのアイデアがありますか?どうすれば宣言できますか? –