我正在尝试开发一个简单的跟踪系统。我想要做的是插入新记录或更新记录,如果它匹配相同的广告系列。如果用户在新广告系列上触发,我想插入一条新记录。这是我目前的查询工作正常。仅当另一列匹配时才更新记录?
INSERT INTO `tracking` (`email`,`ip`,`referrer`,`campaign`,`timestamp`)
VALUES ('$campaign[0]','$ip','$referrer','$campaign[1]','$timestamp')
ON DUPLICATE KEY UPDATE `last_timestamp` = '$timestamp'
我的目标是如果[email protected]触发campaign1,那么它会插入记录。如果他再次尝试广告系列1,它只会更新时间戳。现在,当[email protected]触发campaign2时,它会插入一个全新的记录。
所以基本上我试图只在用户触发一个新的广告系列时才将其加入INSERT。否则,我希望它更新时间戳。
任何想法或建议我真的很感激它!
'只能在唯一的密钥 - 你必须在'campaign'场该附加唯一密钥工作。 – 2012-03-27 14:16:42
但是mysql检查两个键或只是主? – john 2012-03-27 14:17:29
它检查表中的所有唯一键:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – 2012-03-27 14:19:17