From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Hui Jackson <jackhts4(at)gmail(dot)com> |
Cc: | "pgsql-sql(at)lists(dot)postgresql(dot)org" <pgsql-sql(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Strange behavior of transcations |
Date: | 2022-06-05 14:29:27 |
Message-ID: | CAKFQuwZ7fu2sZh25i-8LMWRTW4Trw2oGEXaRaVX9n9nePGnpeQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Sunday, June 5, 2022, Hui Jackson <jackhts4(at)gmail(dot)com> wrote:
> I am working on node-postgres and there is a strange transactions.
> The function aims at locking user's wallet until the refund process is
> complete, then will update item's has_refund to true.
> The problem I am facing is the program return no error, but the database
> is not updated. Unless I spam the function for multiple times then the
> value is updated.
> If I remove begin and commit, then the function work perfectly.
> const refundService = (itemId) =>{
> await pgPool.query('BEGIN;');
> const users = (await pgPool.query('SELECT * from app_user where
> $1=ANY(purchase_list);', [ itemId ])).rows;
> for(let i = 0; i < users.length; i++){
> refund(users[i])
> }
> await pgPool.query('UPDATE item_lists SET has_refund = $1 where id =
> $2;', [true, itemId ]);
> await pgPool.query('COMMIT;');
> }
>
> const refund = (user) =>{
> const refund = 10
> await pgPool.query('UPDATE app_user SET wallet = wallet + $1', [refund
> ]);
> }
>
I think you are mis-using your pool. If you want transactions you need
checkout a connection from the pool and use it for every command in the
transaction. The one-shot query method on the pool is meant for standalone
commands. I say think because I’m unsure why you’d get no updates instead
of updates but no transaction…
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Erik Brandsberg | 2022-06-05 14:37:23 | Re: Strange behavior of transcations |
Previous Message | Hui Jackson | 2022-06-05 11:10:01 | Strange behavior of transcations |