Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не знаю как спросить. Найти строку в таблице и тут же её поменять, если что. / 4 сообщений из 4, страница 1 из 1
13.04.2016, 08:17
    #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
13.04.2016, 09:04
    #39214253
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не знаю как спросить. Найти строку в таблице и тут же её поменять, если что.
balak,

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

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

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


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