【发布时间】:2023-03-19 07:35:01
【问题描述】:
我有这种结构的测试表:
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 值(因此不进行插入,只进行更新)。这是正常行为还是我错过了什么?
【问题讨论】:
-
Every time I run query it increments AUTO_INCREMENT value (so no insert is made, only update). Is this normal behavior or am I missing something?首先你是什么意思?你正在实现你想要的还是想要别的东西? -
你想要发生什么?你想要自动增加键吗?还是您希望它仅在主键空闲时插入?
-
“差距”是我担心的。真实表有更多不同的结构 - 'x' 附加字段经常更改并且 PK 不是 int (记录数适中)。所以通过经常更新表的自增值最终会超出范围,而新插入的比会发生什么?那么我要问的是mysql的这种正常行为是在执行更新时在每个“重复键更新”上增加该值?
标签: mysql insert duplicates auto-increment