如何重置特定复合密钥(myisam)的自动增量?

wj8zmpe1  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(373)

我喜欢为表设置内部自动递增计数器,它使用myisam和复合主键-但只针对特定的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
n3schb8v

n3schb8v1#

几乎没有使用 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 .

相关问题