繁体   English   中英

如何在Postgresql中同时执行两个事务?

[英]How to execute two transactions concurrently in Postgresql?

我想在Postgresql中同时执行两个事务,这就是我得到的

--The first transaction should modify the age of Paul
BEGIN;
DECLARE newage INTEGER;
--the original age of Paul is 32
newage := Select age FROM COMPANY WHERE name = Paul;
newage := newage+10;
update company set age := Sage where name = Paul;
commit;


--The second Transaction shows all information about Paul including his age
Begin
select * from company where name = 'Paul';
commit;

这两部分均在同一SQL编辑器中编写。 我的第一个问题是它无法编译,我收到消息

ERROR:  syntax error at or near "INTEGER"
LINE 2: DECLARE newage INTEGER;

如何改善我的代码以执行它? 谁能帮我? 谢谢!

  1. 在PostgreSQL中,您不能在SQL中声明变量,但是可以在pl/pgsql声明变量
  2. DECLARE关键字创建一个游标,而不是一个变量。
  3. 使用SELECT INTO到值设置为newage
  4. 使用DO执行pl / pgsql。 它将在一个事务中执行。

因此,结果查询如下所示:

DO $$ DECLARE
    newage INTEGER;
BEGIN
    SELECT age INTO newage FROM companey WHERE name = 'Paul';
    newage := newage+10;
    UPDATE company SET age = newage where name = 'Paul';
END $$:

暂无
暂无

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

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