我有这种结构的测试表:
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不同的2列上,即AI。
简单的测试查询:
INSERT INTO test(id_vendor, id_product, test)
VALUES (1,1,1) ON DUPLICATE KEY UPDATE test = 1;
每次运行查询时,它都会增加AUTO_INCREMENT值(因此不会进行插入,只会更新)。这是正常行为还是我错过了什么?
答案 0 :(得分:0)
让我们从另一个角度看待主题:MySQL不会重置表的AUTO_INCREMENT值,除非你告诉它(例如,通过ALTER TABLE
或TRUNCATE TABLE
查询)。在你的情况下,它显然需要使用一个值,因此它可以在它决定它是重复之前组成插入。
此外: