如何在postgresql事务中使用变量

ntjbwcob  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(409)

如何在postgresql内部事务中获取值​​如果select没有返回任何东西,抛出一个错误,如果select返回数据,那么在事务中使用它们?
这样地:

BEGIN;

@activeRounds = SELECT * FROM "rounds" WHERE status = 'active';

if(!@activeRounds) {
  RAISE ERROR "Has no Active rounds"
};

INSERT INTO "bet"
  (user_id, round_id)
VALUES
  (100, @activeRound[0].id)

COMMIT;

如何在事务中的一个请求中执行类似的操作?

dojqjjoe

dojqjjoe1#

您可以根据表结构调整以下代码:

begin;
do
$$
declare
 v int;
begin
 select c1 into v from t1 where  k1=1;
 if not found 
 then
  raise exception 'no row found';
 else
  insert into t2(c2) values(v);
 end if;
end;
$$;
commit;

请注意 begin; 启动事务并 begin 启动pl/pgsql块。

sr4lhrrt

sr4lhrrt2#

写一个 DO pl/pgsql中的语句。
就像所有的sql语句一样, DO 在单个事务中运行。pl/pgsql是一种具有变量和条件处理的过程语言。

相关问题