加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在PostgreSQL函数中使用COMMIT和ROLLBACK

发布时间:2020-12-13 15:49:44 所属栏目:百科 来源:网络整理
导读:我使用三个插入语句,如果第三个语句中有错误,我想回滚第一个和第二个.如果没有办法做到这一点,请告诉我一个不同的方法来处理PostgresqQL中的这个. 如果我使用COMMIT或ROLLBACK,我会收到错误. CREATE OR REPLACE FUNCTION TEST1 () RETURNS VOID LANGUAGE 'pl
我使用三个插入语句,如果第三个语句中有错误,我想回滚第一个和第二个.如果没有办法做到这一点,请告诉我一个不同的方法来处理PostgresqQL中的这个.

如果我使用COMMIT或ROLLBACK,我会收到错误.

CREATE OR REPLACE FUNCTION TEST1 ()
   RETURNS VOID
   LANGUAGE 'plpgsql'
   AS $$
BEGIN 

    INSERT INTO table1 VALUES (1);

    INSERT INTO table1 VALUES (2);

    INSERT INTO table1 VALUES ('A');
    COMMIT;
EXCEPTION
   WHEN OTHERS THEN
   ROLLBACK;
END;$$;

上面的代码不起作用; PostgreSQL函数不支持COMMIT和ROLLBACK.

解决方法

您不能在函数中使用SAVEPOINT,COMMIT或ROLLBACK等事务语句.

在PL / pgSQL中启动块的BEGIN与启动事务的SQL语句BEGIN不同.

只需从函数中删除COMMIT,就可以得到解决方案:因为整个函数总是在单个事务中运行,所以第三个语句中的任何错误都将导致ROLLBACK也撤消前两个语句.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读