Ответы пользователя по тегу MySQL
  • Как правильно заблокировать строки?

    dimzon541
    @dimzon541
    Cудя по описанию вы используете реляционную базу как очередь задач/сообщений, что есть антипаттерн...

    По теме - используйте функцию connection_id:
    -- Все это надо сделать в транзакции
    -- Сначала захватим строчку, пометив ее своим уникальным идентификатором
    UPDATE tblName SET locked=connection_id() WHERE locked=0 ORDER BY dateColumn LIMIT 1
    -- Получим данные (предварительно захваченную строку)
    SELECT * FROM tblName WHERE locked=connection_id()
    -- Удалим за собой
    DELETE FROM tblName WHERE locked=connection_id()
    Ответ написан
    Комментировать