2
插入我的测试表,这种结构:MySQL在重复键更新PK AI
CREATE TABLE IF NOT EXISTS `test` (
`id_pc` int(11) NOT NULL AUTO_INCREMENT,
`id_vendor` int(11) NOT NULL,
`id_product` int(11) NOT NULL,
`test` int(11) NOT NULL,
PRIMARY KEY (`id_pc`),
UNIQUE KEY `id_vendor` (`id_vendor`,`id_product`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
正如你可以看到UQ键被设置在从PK是AI不同的2列。
简单测试查询:
INSERT INTO test(id_vendor, id_product, test)
VALUES (1,1,1) ON DUPLICATE KEY UPDATE test = 1;
我每次查询运行它增加AUTO_INCREMENT值(所以没有插件由,只更新)。这是正常的行为还是我错过了什么?
'每次运行查询时,都会增加AUTO_INCREMENT的值(因此不会插入,只会更新)。这是正常行为吗?还是我错过了什么?“首先,这是什么意思?你是否实现了你想要的或想要的东西? – 2012-04-16 09:55:20
你想要发生什么?你想不得不自动递增键吗?或者你希望它只在主键空闲时插入? – Anthony 2012-04-16 10:01:04
'差距'让我感到担忧。真正的表格有更多不同的结构 - 'x'附加字段经常改变,PK不是int(记录数量适中)。所以通过经常更新表的自动增量值最终会超出范围,并且新插入会发生什么?所以我问的是这个mysql的正常行为,当更新被执行时,每个'重复密钥更新'增加这个值? – Bernard 2012-04-16 13:04:54