2011-05-21 38 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

相关问题