Обновить запись, только если другой столбец соответствует? - PullRequest
3 голосов
/ 27 марта 2012

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

INSERT INTO `tracking` (`email`,`ip`,`referrer`,`campaign`,`timestamp`) 
VALUES ('$campaign[0]','$ip','$referrer','$campaign[1]','$timestamp') 
ON DUPLICATE KEY UPDATE `last_timestamp` = '$timestamp'

Моя цель - если joe@bob.net запускает кампанию1, тогда она вставит запись.Если он снова попробует кампанию 1, он просто обновит отметку времени.Теперь, когда joe@bob.net запускает кампанию2, он вставляет совершенно новую запись.

Так что в основном я пытаюсь вставить ее в INSERT, только когда пользователь запускает новую кампанию.В противном случае я хочу обновить отметку времени.

Любые идеи или советы, которые я действительно ценю!

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Просто добавьте уникальный ключ (электронная почта, кампания) -

ALTER TABLE `tracking`
    ADD UNIQUE INDEX `UQ_email_campaign` (`email`, `campaign`);
2 голосов
/ 27 марта 2012

Если только я что-то не упустил, все, что вам нужно, это уникальный ключ, вставленный в столбцы "email" и "кампания" на вашей таблице:

ALTER TABLE tracking ADD UNIQUE KEY uk_email_campaign (email, campaign);

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