微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我使用三个插入语句,如果第三个语句中有错误,我想回滚第一个和第二个.如果没有办法做到这一点,请告诉我一个不同的方法来处理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也撤消前两个语句.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐