2012-03-27 64 views
3

我正在嘗試開發一個簡單的跟蹤系統。我想要做的是插入新記錄或更新記錄,如果它匹配相同的廣告系列。如果用戶在新廣告系列上觸發,我想插入一條新記錄。這是我目前的查詢工作正常。僅當另一列匹配時才更新記錄?

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。否則,我希望它更新時間戳。

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

+0

'只能在唯一的密鑰 - 你必須在'campaign'場該附加唯一密鑰工作。 – 2012-03-27 14:16:42

+0

但是mysql檢查兩個鍵或只是主? – john 2012-03-27 14:17:29

+1

它檢查表中的所有唯一鍵:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – 2012-03-27 14:19:17

回答

2

除非我失去了一些東西,你需要的是一個獨特的密鑰放在 '電子郵件' 和你的桌子上 '運動' 列:

ALTER TABLE tracking ADD UNIQUE KEY uk_email_campaignemailcampaign);

+0

我不知道你可以這樣做。我仍然在學習,所以我非常感謝它完美的幫助。 – john 2012-03-27 14:34:58

2

剛上(電子郵件,活動)添加唯一的密鑰 - 在重複key`

ALTER TABLE `tracking` 
    ADD UNIQUE INDEX `UQ_email_campaign` (`email`, `campaign`); 
相關問題