Пусть в таблице innoDB есть поле longblob, в котором лежит файл в 100мб. Нужно организовать скачивание этого файла. Но с базой данных могут работать одновременно несколько пользователей.
Как заблокировать конкретную строку таблицы для изменений на время, пока один ис пользователей скачивает файл?
Примечание:
gaRex, моё приложение работает с чужой базой данных. Изменить базу по моей инициативе невозможно.
По поводу второго предложения, что MySQL сделает всё сам.
MySQL не умеет потоково возвращать файлы. А запрос не может вернуть больше скольки-то метров (кажется 16-и) из одного запроса. В базе лежат файлы произвольного размера. Поэтому, даже если MySQL что-то блокирует, то это явно не блокировка нескольких запросов не объединённых даже транзакцией.
Примечание:
stopkran, кроме моего приложения (это не скрипт) с базой работают ещё другие. Нельзя надеяться на сторонние приложения, что они будут проверять какую-то там таблицу, на предмет блокировки строки. Блокировка должна быть внутренней с точки зрения MySQL.
Примечание:
stopkran, защита от случайного скачивания вообще к делу не относится. Да и работа с файлами - не самый важный момент. Это могло быть поле longtext, например. Вопрос касается только возможностей MySQL - может он заблокировать конкретную строку таблицы или нет.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.