繁体   English   中英

如何在 PostgreSQL 事务中使用变量

[英]How to use variables in PostgreSQL transaction

怎么在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;

如何在事务中的一个请求中做类似的事情?

PL/pgSQL中编写DO语句。

像每个 SQL 语句一样, DO在单个事务中运行。 PL/pgSQL 是一种具有变量和条件处理的过程语言。

您可以使以下代码适应您的表结构:

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 块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM