powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не знаю как спросить. Найти строку в таблице и тут же её поменять, если что.
4 сообщений из 4, страница 1 из 1
Не знаю как спросить. Найти строку в таблице и тут же её поменять, если что.
    #39214228
balak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.
Пытаюсь создать некую реализацию раздачи заданий.
Параллельно до десятка скриптов ищут в таблице первую строку со статусом "свободно" и если таковая найдена, скрипт должен её сразу же изменить, чтобы остальные не успели.

Правильно ли я понимаю, что транзакция -- для этого, или нет?
Теоретически, если я пишу
Код: plsql
1.
2.
3.
4.
BEGIN;
SELECT * FROM tasks WHERE status = 'ready' LIMIT 1;
UPDATE tasks WHERE id = $id SET status = 'process';
COMMIT;



1. Получается я занимаю всю таблицу на время транзакции?
2. Как получить id внутри запроса?
3. А если не найдена такая строка?
4. Теоретически я могу из скрипта посмотреть результат работы и принять решение, но я хочу быстрее освободить таблицу?

Работаю с БД через ruby/pg напрямую, без ORM.
...
Рейтинг: 0 / 0
Не знаю как спросить. Найти строку в таблице и тут же её поменять, если что.
    #39214253
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
balak,

Код: sql
1.
2.
3.
4.
UPDATE ...
SET ...
FROM ...
WHERE ...
...
Рейтинг: 0 / 0
Не знаю как спросить. Найти строку в таблице и тут же её поменять, если что.
    #39214826
balak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho,

Но этот запрос поменяет все строки , а мне нужно только первую, любую, одну встретившуюся.
В справке по команде я не нашёл никаких намёков на это.
...
Рейтинг: 0 / 0
Не знаю как спросить. Найти строку в таблице и тут же её поменять, если что.
    #39214863
balak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho,

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


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