mysql - 如何为特定的复合键(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
解决方案
几乎为零使用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
.
推荐阅读
- r - R:从 0.6 向上取整
- angularjs - 重新加载或刷新正在 AngularJs 视图中呈现 Json 字符串
- django - 在 Django 的视图函数中调用函数
- swift - 如果 iOS 购买验证失败怎么办?
- azure-cosmosdb - 如何使用 Gremlin 查询将所有节点作为分层树?
- sql-server - T-SQL - 客户链接
- c++ - Xcode 中的重复程序 - C++
- python - Mac - 没有名为“scipy”的模块
- python - 如果给定点和每个(df.lat,df.lng)之间的距离小于或等于0.1km,则返回行
- rest - 如何使用 Express 和 Mongoose 使用 REST API 过滤记录?