1

BEGIN ATOMICPostgreSQL中的 Sybase 等价物是什么?

它应该是这样的:

create or replace function my_func()
returns int
as $$ 
begin 
    begin atomic
        update stetment1;
        update stetment2;
        update stetment3;
    end;
end;
$$ LANGUAGE PLPGSQL;

三个更新语句必须作为一个整体一起成功或失败。

4

1 回答 1

0

三个更新语句必须同时成功或失败。

问题下方的评论是一种误解。每个Postgres 函数都是事务性的,并且总是 作为一个成功或失败。你只需要一个PROCEDURE相反的东西:提交在程序体内已经完成的事情。

文字子句BEGIN ATOMIC用于新的标准 SQLCREATE FUNCTION语法,最终在Postgres 14中添加。但它与任何其他 Postgres 函数一样“原子”。

无论哪种方式,您都可以使用新语法编写:

CREATE OR REPLACE FUNCTION my_func()
  LANGUAGE plpgsql
  RETURNS void  -- since you are not returning anything
BEGIN ATOMIC
   update stetment1;
   update stetment2;
   update stetment3:
END;

看:

于 2021-10-10T01:49:44.033 回答