如何在postgresql事务中使用变量

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

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

  1. BEGIN;
  2. @activeRounds = SELECT * FROM "rounds" WHERE status = 'active';
  3. if(!@activeRounds) {
  4. RAISE ERROR "Has no Active rounds"
  5. };
  6. INSERT INTO "bet"
  7. (user_id, round_id)
  8. VALUES
  9. (100, @activeRound[0].id)
  10. COMMIT;

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

dojqjjoe

dojqjjoe1#

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

  1. begin;
  2. do
  3. $$
  4. declare
  5. v int;
  6. begin
  7. select c1 into v from t1 where k1=1;
  8. if not found
  9. then
  10. raise exception 'no row found';
  11. else
  12. insert into t2(c2) values(v);
  13. end if;
  14. end;
  15. $$;
  16. commit;

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

展开查看全部
sr4lhrrt

sr4lhrrt2#

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

相关问题