首页 > 解决方案 > 如何为特定的复合键(MyISAM)重置 AUTO_INCREMENT?

问题描述

我喜欢为使用 MyISAM 和复合主键的表设置内部 AUTO_INCREMENT 计数器 - 但仅适用于特定的 PK 组合。如果我使用

ALTER TABLE tablename AUTO_INCREMENT = 1;

它将为所有复合 PK 组合设置内部计数器,这是我不想要的。

我需要类似的东西

ALTER TABLE tablename AUTO_INCREMENT = 1 WHERE prefix = 5 AND suffix = X;

它不能以这种方式工作。是否有可能只更改 MyISAM 表中特定 PK 组合的计数器?

桌子:

CREATE TABLE `ENG__faktury_counter` 
(
    `year` int(10) NOT NULL,
    `prefix` varchar(10) NOT NULL,
    `DIC` varchar(50) NOT NULL,
    `id_counter` int(15) NOT NULL AUTO_INCREMENT ,
    `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
     PRIMARY KEY (`year`,`prefix`,`DIC`,`id_counter`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

标签: mysqlmariadbauto-incrementmyisam

解决方案


几乎为零使用ALTER TABLE ... AUTO_INCREMENT=....

如果您使用 MyISAM 并且有

foo ...
id ... AUTO_INCREMENT
PRIMARY KEY(foo, id)  -- where the _2nd_ column is auto-inc

然后没有什么可做的

foo  id
---  --
cat   1
cat   2
dog   1
bird  1
cat   3
bird  2
bird  3
dog   2

无论您插入行的顺序如何。

如果这不能解决您的问题,请通过示例和SHOW CREATE TABLE.


推荐阅读