1
我有一個表有四列,(id
,searchstring
,count
,timestamp
)。
我希望能夠使用ON DUPLICATE KEY UPDATE
功能更新輸入副本時的searchstring
的計數。有一個主鍵以及自動遞增字段
但是,searchstring必須是能夠做到這一點的主鍵,並且我的ID會自動設置爲我的主鍵,因爲它是自動遞增的。
有沒有辦法解決這個問題?
我有一個表有四列,(id
,searchstring
,count
,timestamp
)。
我希望能夠使用ON DUPLICATE KEY UPDATE
功能更新輸入副本時的searchstring
的計數。有一個主鍵以及自動遞增字段
但是,searchstring必須是能夠做到這一點的主鍵,並且我的ID會自動設置爲我的主鍵,因爲它是自動遞增的。
有沒有辦法解決這個問題?
是,設置主鍵以包括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);
你怎麼去這樣做,而無需創建一個新表? – Michael 2011-05-21 23:18:50
改變工作! – Michael 2011-05-22 17:36:23
此建議會改變表格以允許重複的ID和重複的搜索字符串 - 而不是要求的內容。更好的答案是使兩個*列唯一,而不是創建複合鍵。 – sqlvogel 2011-05-23 12:52:00