如何为特定组合键(MyISAM)重置AUTO_INCREMENT?

时间:2019-01-08 13:14:17

标签: mysql mariadb auto-increment myisam

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

ALTER TABLE tablename AUTO_INCREMENT = 1;

它将为所有不需要的复合PK组合设置内部计数器。

我需要类似的东西

ALTER TABLE tablename AUTO_INCREMENT = 1 WHERE prefix = 5 AND sufix = 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 

1 个答案:

答案 0 :(得分:0)

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加以完善。