2012-06-12 82 views
4

我將記錄我的用戶登錄的IP地址。要做到這一點,我有一個簡單的表3列:用戶,IP,時間。時間是他們上次登錄該地址的時間。MySQL - INSERT ON DUPLICATE KEY - 2列

當他們登錄,我想行插入包含他們登錄時使用的IP數據庫,他們登錄的時間。

如果使用相同的用戶和同一IP已存在某行,我只想更新時間。一個更一般的問題:

如何插入一行或更新它,如果兩列(或多列)是相同的?

回答

12

你只需要創建複合唯一鍵user + ip和使用INSERT ON DUPLICATE KEY UPDATE

INSERT INTO tbl (user, ip, `time`) VALUES (1, '1.2.3.4', NOW()) 
ON DUPLICATE KEY UPDATE `time` = NOW() 

要創建索引的使用有點像

CREATE UNIQUE INDEX tbl_user_ip ON tbl (user, ip) 
+0

複合唯一鍵?我從來沒有聽說過這些! – fruitcup

+0

@DrAgonmoray:你聽說過複合鍵或唯一鍵嗎? – zerkms

+0

我聽說過獨特的,但我從來不知道你可以分配一個單一的關鍵到多個列。太棒了,謝謝! – fruitcup

相關問題