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