pg 事务 存储过程_PostgreSQL:在plpgsql函数内回滚事务?

来自MS SQL世界,我倾向于大量使用存储过程.我正在编写一个应用程序使用了大量的PostgreSQL plpgsql函数.我想要做的是回滚一个特定函数中包含的所有INSERTS / UPDATES,如果我在其中的任何一点收到异常.

我最初的印象是,每个函数都包含在自己的事务中,并且异常会自动回滚所有内容.不过,似乎并非如此.我想知道我是否应该使用保存点与异常处理相结合?但是,我不太明白事务和保存点之间的区别,以便知道这是否是最佳方法.有什么建议吗

CREATE OR REPLACE FUNCTION do_something(

_an_input_var int

) RETURNS bool AS $$

DECLARE

_a_variable int;

BEGIN

INSERT INTO tableA (col1,col2,col3)

VALUES (0,1,2);

INSERT INTO tableB (col1,'whoops! not an integer');

-- The exception will cause the function to bomb,but the values

-- inserted into "tableA" are not rolled back.

RETURN True;

END; $$LANGUAGE plpgsql;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值