2013-01-22 19 views
3

我正在使用MySQL中的僞會話表。當前表格如下所示:MySQL更換進入多個鍵?

id | key | value | metadata 

id是會話所屬的用戶,元數據是用戶的IP地址。這背後的想法是每個用戶可以從不同的IP地址多次登錄。我不知道是否能REPLACE INTO替換值僅其中id =用戶ID,鍵=鍵,和元= IP_ADDRESS因此,最好我們能像這樣結束:

id | key | value | metadata 
1  test  avalue  127001 
1  test  bvalue  19216801 
1  test  cvalue  19215810 

是類似的東西可能嗎?

回答

5

如果你有一個UNIQUE索引或PRIMARY KEY跨這三列定義,那麼是的,你可以REPLACE INTO它。添加索引,如果你不已經擁有了它:

ALTER TABLE session_table ADD PRIMARY KEY (`id`, `key`, `metadata`); 

如果你已經有了一個PK定義,橫跨這些列創建複合UNIQUE指數:

CREATE INDEX `idx_id_key_metadata` ON session_table (`id`, `key`, `metadata`); 

More on the MySQL CREATE INDEX syntax

Here's a little demonstration