我喜欢为表设置内部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
答案 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
加以完善。