powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / UPDATE OR INSERT в одном запросе
7 сообщений из 7, страница 1 из 1
UPDATE OR INSERT в одном запросе
    #32038106
Ilia Vinokurov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые Гуру !

Столкнулся с проблемой следующего характера:
Мне нужно создать табличку, хранящую пары: ключ - значение (типа DBM или реестр в Win), причем ключ должен быть уникальным для определенного пользователя.
Создал поля UserID, Name, Value.
Создал библиотеку на перле, в которой есть функции getParam, setParam, которые возвращают значение ключа или устанавливают/создают его.
Изменение значения параметра происходит за 2..3 запроса:
1. Определяется количество записей ключа для пользователя.
2. Если 0, то использую INSERT.
3. Если 1, то использую UPDATE.
4. Если >1, то DELETE + INSERT.

Кто-нибудь реализовывал этот алгоритм на MySQL в 1 запрос ?

С уважением,
Илья Винокуров.
...
Рейтинг: 0 / 0
UPDATE OR INSERT в одном запросе
    #32038117
Romantik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ведь нет в MySQL вложенности :(
Если интересует выполнение всего или ничего, ИМХО я бы посоветовал тип BDB и транзакции.
...
Рейтинг: 0 / 0
UPDATE OR INSERT в одном запросе
    #32180673
Edo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Edo
Гость
Допустим нужно в таблице tSumm добавить пользователю 'Вася' 3 рубля к его сумме. Тогда:

INSERT INTO tSumm (name, sm) VALUES ('Вася', 3.00)
ON DUPLICATE KEY UPDATE name=name+3.00

Это или вставит запись, если ее нет, либо добавит к уже имеющейся строке значение.

Для этого:
1. поле name должно быть или PRIMARY, или UNIQE
2. mysql версии не ниже 4.1.0
...
Рейтинг: 0 / 0
UPDATE OR INSERT в одном запросе
    #32180679
Edo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Edo
Гость
Виноват. исправляюсь :)

INSERT INTO tSumm (name, sm) VALUES ('Вася', 3.00)
ON DUPLICATE KEY UPDATE sm=sm+3.00
...
Рейтинг: 0 / 0
UPDATE OR INSERT в одном запросе
    #32181243
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно я не брал в руки MySQL, что-то много поменялось...
Но по-моему раньше можно было так:
1. Первичный ключ - уникален. Если он уже есть то insert не заработает
2. Поэтому было специальное слово - replace

replace таблица (value) where name=твойключ

И тогда если нет ключа, то вставляет новую запись, а если есть, то сначала удаляет, потом вставляет. Запись.

А как счас - не знаю. Появились вложенные запросы, транзакции......... может, replace убрали.
...
Рейтинг: 0 / 0
UPDATE OR INSERT в одном запросе
    #32181631
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ерунду какую-то написал, а никто меня и не поправит...
Видимо, replace действительно больше нет, и никто про него не знает?
Синтаксис replace был такой же как у insert

replace таблица (value) values (' твоезначение ') where name=' твойключ '
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
UPDATE OR INSERT в одном запросе
    #32623206
Balancer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
feddЕрунду какую-то написал, а никто меня и не поправит...
Видимо, replace действительно больше нет, и никто про него не знает?
Синтаксис replace был такой же как у insert

replace таблица (value) values ('твоезначение') where name='твойключ'

REPLACE ни куда не делся. Но он никогда не работал, как UPDATE.
REPLACE = DELETE + INSERT
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / UPDATE OR INSERT в одном запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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