| From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
|---|---|
| To: | pgsql-ru-general(at)lists(dot)postgresql(dot)org |
| Subject: | SELECT FOR UPDATE без транзакции |
| Date: | 2018-04-13 07:45:21 |
| Message-ID: | 20180413074521.mu2wat6kiqop4g3j@vdsl.uvw.ru |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-ru-general |
а можно ли применять SELECT FOR UPDATE в составных запросах?
то есть транзакцию не объявляем/начинаем, а пишем однократный
автокоммит-запрос, нечто вроде:
WITH
"s1" AS ( -- тут блокируемся
SELECT
*
FROM
"t"
WHERE
id = $1
FOR UPDATE
),
"v1" AS ( -- тут вычисляем значение
SELECT
SUM("v") AS "v"
FROM
"t2"
WHERE
"bla" = $2
)
UPDATE -- а дальше собственно update
"t"
SET
"v" = (SELECT v FROM v1)
FROM
"s1"
WHERE
"t"."id" = "s1"."id"
--
. ''`. Dmitry E. Oboukhov <unera(at)debian(dot)org>
: :’ :
`. `~’ GPG key: 4096R/08EEA756 2014-08-30 `- 71ED ACFC 6801 0DD9 1AD1 9B86 8D1F 969A 08EE A756
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Sergei Kornilov | 2018-04-13 08:38:08 | Re: SELECT FOR UPDATE без транзакции |
| Previous Message | Vladimir Borodin | 2018-03-20 17:18:42 | Re: Meetup в офисе Яндекса в Питере |