我正在尝试开发一个简单的跟踪系统。我要做的是插入新记录或更新记录,如果它与同一个广告系列匹配。如果在新广告系列上触发了用户,我想插入新记录。这是我当前的查询工作正常。
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。否则,我希望它更新时间戳。
我真的很感激任何想法或建议!
答案 0 :(得分:2)
除非我遗漏了某些内容,否则您只需在桌面上的“电子邮件”和“广告系列”列中输入一个唯一的密钥:
ALTER TABLE tracking
ADD UNIQUE KEY uk_email_campaign
(email
,campaign
);
答案 1 :(得分:2)
只需添加一个唯一键(电子邮件,广告系列) -
ALTER TABLE `tracking`
ADD UNIQUE INDEX `UQ_email_campaign` (`email`, `campaign`);