![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день!
В базе есть таблица options. В ней должно быть не больше 1 записи. Как мне написать запрос обновляющий одно поле в этой таблице или вставляющий запись в эту таблицу, если она пуста? Никаких индексов в таблице нет и я их вставлять не могу. Поэтому ON DUPLICATE KEY UPDATE использовать нельзя.
Спасибо!
Неактивен

Если никаких индексов нет, и Вы не хотите их добавлять, то прийдется
обеспечить сериализацию руками. Например, так:
LOCK TABLES options WRITE; -- заблокировать таблицу
SELECT COUNT(*) FROM options; -- посмотреть, есть ли строка
INSERT INTO options VALUES ...; -- добавить строку
UPDATE options SET ...; -- или обновить — это надо решить в клиентском
-- приложении в зависимости от COUNT(*)
UNLOCK TABLES; -- разблокировать таблицыНеактивен