我正在尝试开发一个简单的跟踪系统。我想做的是插入新记录或更新记录(如果它与同一事件匹配)。如果用户在新事件中被触发,我想插入一条新记录。这是我当前运行良好的查询。
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,那么它将插入记录。如果他再次尝试事件 1,它只会更新时间戳。现在,当 joe@bob.net 触发 campaign2 时,它会插入一条全新的记录。
所以基本上我试图让它仅在用户触发新事件时插入。否则,我希望它更新时间戳。
如果有任何想法或建议,我将不胜感激!
最佳答案
除非我遗漏了什么,否则您只需要在表格的“电子邮件”和“广告系列”列上放置一个唯一键即可:
ALTER TABLE tracking
ADD UNIQUE KEY uk_email_campaign
(email
, campaign
);
关于php - 仅当另一列匹配时才更新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9891318/