2011-05-21 75 views
1

我有一個表有四列,(id,searchstring,count,timestamp)。
我希望能夠使用ON DUPLICATE KEY UPDATE功能更新輸入副本時的searchstring的計數。有一個主鍵以及自動遞增字段

但是,searchstring必須是能夠做到這一點的主鍵,並且我的ID會自動設置爲我的主鍵,因爲它是自動遞增的。
有沒有辦法解決這個問題?

回答

0

是,設置主鍵以包括ID和搜索字符串

CREATE TABLE `test`.`new table` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `searchstring` varchar(45) NOT NULL, 
    `count` int(10) unsigned NOT NULL, 
    `timest` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`,`searchstring`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

可以使用改變現有的表:

ALTER TABLE `test`.`new table` DROP PRIMARY KEY, 
ADD PRIMARY KEY USING BTREE(`id`) 
ADD UNIQUE INDEX ss(searchstring); 
+0

你怎麼去這樣做,而無需創建一個新表? – Michael 2011-05-21 23:18:50

+0

改變工作! – Michael 2011-05-22 17:36:23

+0

此建議會改變表格以允許重複的ID和重複的搜索字符串 - 而不是要求的內容。更好的答案是使兩個*列唯一,而不是創建複合鍵。 – sqlvogel 2011-05-23 12:52:00

相關問題