仅当另一列匹配时更新记录?

时间:2012-03-27 14:14:38

标签: php mysql sql-update

我正在尝试开发一个简单的跟踪系统。我要做的是插入新记录或更新记录,如果它与同一个广告系列匹配。如果在新广告系列上触发了用户,我想插入新记录。这是我当前的查询工作正常。

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触发campaign1,那么它将INSERT记录。如果他再次尝试活动1,它只会更新时间戳。现在,当joe@bob.net触发campaign2时,它会插入一条全新的记录。

所以基本上我只是在用户触发新广告系列时尝试将其设为INSERT。否则,我希望它更新时间戳。

我真的很感激任何想法或建议!

2 个答案:

答案 0 :(得分:2)

除非我遗漏了某些内容,否则您只需在桌面上的“电子邮件”和“广告系列”列中输入一个唯一的密钥:

ALTER TABLE tracking ADD UNIQUE KEY uk_email_campaignemailcampaign);

答案 1 :(得分:2)

只需添加一个唯一键(电子邮件,广告系列) -

ALTER TABLE `tracking`
    ADD UNIQUE INDEX `UQ_email_campaign` (`email`, `campaign`);