[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объясните на примере как это делается
php-down
Ребят, какую надо сделать SQL логику что когда я добавляю данные в БД, то сначала производилась проверка есть ли уже подобные в базе
Если есть то заменить (обновить) старые данные на новые данные
Если нет то вставить новые.

Как это реализуется не покажете?



Спустя 3 минуты, 51 секунда (14.03.2012 - 20:56) inpost написал(а):
INSERT ON DUPLICATE UPDATE

Спустя 3 минуты, 26 секунд (14.03.2012 - 20:59) Игорь_Vasinsky написал(а):
Цитата
INSERT ON DUPLICATE UPDATE

так будет попытка обновления существующей записи - если её нет - она создастся

UPDATE - это просто обновление записи - если данные совпадают, обновления не будет.

Спустя 36 секунд (14.03.2012 - 21:00) Pulse написал(а):
INSERT INTO table SET column = 1, id=1 ON DUPLICATE KEY UPDATE column = column + 1

Как пример возьми

Спустя 53 секунды (14.03.2012 - 21:01) Pulse написал(а):
Опоздал с ответом, извиняюсь за дубль tongue.gif

Спустя 3 минуты, 59 секунд (14.03.2012 - 21:05) php-down написал(а):
INSERT INTO table SET column = 1, id=1 ON DUPLICATE KEY UPDATE column = column + 1

KEY должен быть индексем?

Спустя 3 минуты, 57 секунд (14.03.2012 - 21:09) Игорь_Vasinsky написал(а):
нет эта строка ON DUPLICATE KEY UPDATE - команда

Спустя 4 минуты, 8 секунд (14.03.2012 - 21:13) Pulse написал(а):
В таблице должен быть обязательно primary key.

Спустя 5 минут, 14 секунд (14.03.2012 - 21:18) Pulse написал(а):
Цитата (php-down @ 14.03.2012 - 21:05)
INSERT INTO table SET column = 1, id=1 ON DUPLICATE KEY UPDATE column = column + 1

В этом случае, если в таблице уже есть запись с id = 1, который является primary или unique key, то в этой записи обновиться поле column, а точнее поле column увеличиться на единицу.

Спустя 24 минуты, 18 секунд (14.03.2012 - 21:42) php-down написал(а):
Что-то запутался.

таблица
id int primary
coef_id int index
value int

есть массив новых данных для coef_id и value
id пока не знаю. Он auto_increment
Надо ведь сначала найти id для проверки уникальности, затем обновить для них
А для остальных просто вставить.

Или я что-то не допонимаю.

Спустя 1 час, 7 минут, 35 секунд (14.03.2012 - 22:50) sergeiss написал(а):
ПРАЙМЕРИ КЕЙ должен быть уникальным, но автоинкрементное поле не годится. Просто по определению. Потому что уникальность самой записи должны определяться по каким-то более значимым параметрам. Которые ты будешь указывать при вставке данных и которые могут, при каких-то условиях, повторяться. Тогда и будет сделан апдейт.
Если же ты попробуешь сделать автоинкрементное поле этим ПРАЙМЕРИ КЕЙ, то тогда при вставке данных уникальность будет всегда соблюдена, просто по определению smile.gif Но при этом могут быть повторы по другим полям.

Спустя 31 минута, 36 секунд (14.03.2012 - 23:22) php-down написал(а):
Спасибо Всем за советы. Понятно надо уходить от автоинкремента.

Надо теперь придумать как создавать уникальный ID из 6 ти разных чисел значений данных. под md5() их не хочу по причине 32 байта сохранять для большой таблицы это слишком. Лучше INT
Их сумма и произведение может совпасть. Если их приканкатинировать и потом преобразовать в целочисленное?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.