Поле MySql Update или Insert, если не существует, без первичного ключа - PullRequest
4 голосов
/ 16 марта 2012

У меня есть таблица из 3 столбцов (все числовые) с полями CustID (не уникально), ProdID (не уникально) и цена.Единственная уникальность заключается в том, что ни одна пара CustID / ProdID не дублируется.Таким образом, у каждого клиента своя цена для каждого продукта.Я использую метод трех линий.(a) поиск, чтобы видеть, существует ли пара, (b) если да, я обновляю цену, (c) если нет, я вставляю новую пару с ценой.Я еще не создал индексы для идентификаторов (он работает нормально для целей разработки).

Может кто-нибудь предложить способ использования инструкции REPLACE, большинство примеров INSERT / ON DUPE, кажется, подразумевают первичный ключ, необходимый,У меня обычно всегда есть ПК, просто казалось расточительным для этого требования.Большое спасибо всем, кто успел мне помочь.Кен Эштон

Извините, Майкл, вы уже дали мне пример.Сейчас разберусь с голосами, большое спасибо ребята

1 Ответ

3 голосов
/ 16 марта 2012

Как предположили Майкл и Тони, ПК никогда не теряется.Поэтому всегда полезно иметь ПК в каждой таблице.Поэтому я бы сначала предложил создать PK, а затем использовать INSERT ON DUPLICATE KEY.

Для достижения того, что вы хотите без PK, вы можете сначала выполнить DELETE, а затем INSERT.Фактически это то, что REPLACE делает внутренне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...