powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как сделать select и одновременно update заселекченых строк?
9 сообщений из 9, страница 1 из 1
как сделать select и одновременно update заселекченых строк?
    #39379417
kkv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть таблица с данными и несколько клиентов.
клиенты делают select * from table where "обработано" isnull limit 10;
как сделать, чтоб клиенты не заселектили одни и те же строки?
ну т.е. каким то образом нужно заапдэйтить заселекченые строки в одной транзакции.
хелп...
...
Рейтинг: 0 / 0
как сделать select и одновременно update заселекченых строк?
    #39379434
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
как сделать select и одновременно update заселекченых строк?
    #39379437
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо вместо select и последующего update сделать напрямую update .... returning
...
Рейтинг: 0 / 0
как сделать select и одновременно update заселекченых строк?
    #39379627
kkv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij,

returning не то, он только для одной строки работает.
...
Рейтинг: 0 / 0
как сделать select и одновременно update заселекченых строк?
    #39379628
kkv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,

спасибо, то что нужно!
...
Рейтинг: 0 / 0
как сделать select и одновременно update заселекченых строк?
    #39379660
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot kkv79returning не то, он только для одной строки работает.[/quot]
Поясните, ибо я другого мнения.
...
Рейтинг: 0 / 0
как сделать select и одновременно update заселекченых строк?
    #39380168
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MelkijЛибо вместо select и последующего update сделать напрямую update .... returning
Нельзя. Вторая сессия будет ждать коммита первой, а потом обновит уже обновленные записи.
SKIP LOCKED - очень правильная фича.
...
Рейтинг: 0 / 0
как сделать select и одновременно update заселекченых строк?
    #39380171
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei.Agalakov,

Ваше утверждение применимо и к `FOR UPDATE SKIP LOCKED` — как только данная транзакция зафиксируется, любая другая может изменить эти записи.
В случае с `UPDATE RETURNING` будут возвращены только те записи, которые были изменены. И да, после фиксации данные и в этом случае могут быть изменены любой другой транзакцией.
...
Рейтинг: 0 / 0
как сделать select и одновременно update заселекченых строк?
    #39380183
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei.Agalakov,

а никто не спорит, что skip locked штука полезная.
Вопрос: а что ещё надо сделать именно в этой транзакции. Если только проставить статус "в работе" - т.к. нужно сделать медленный вызов внешнего апи - то одного returning без skip locked достаточно.

Или дёрнуть обоих:
Код: sql
1.
2.
3.
update tablename set   ....
where pk in (select pk  from tablename where ... for update skip locked)
returning ...


Что избавляет приложение от необходимости строить update.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как сделать select и одновременно update заселекченых строк?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]