特定主键值的多次自动递增
问题:
如何数据库针对特定的主键值提供不同的自增键,使得每个主键值都有自己独立的 顺序?例如,如果一个表包含一个具有自动增量的“id”列和一个用于用户 ID 的“uid”列,是否可以为每个“uid”值设置不同的自动增量序列?
答案:
MySQL 与 MyISAM引擎
MySQL 的 MyISAM 引擎支持此功能。当多列索引中的辅助列指定 AUTO_INCRMENT 时,AUTO_INCRMENT 列的生成值计算为 MAX(auto_increment_column) 1 WHERE prefix=given-prefix。
其他解决方案
独家餐桌Lock
一种替代解决方案是在尝试 INSERT 之前获取独占表锁。这可以防止并发 INSERT 创建竞争条件。但是,它会序列化对表的访问,从而限制了吞吐量。
外部 ID 生成
另一种方法是使用 memcached 等机制在事务范围之外生成 id 号或集中式服务。这可以确保唯一的 id 值,而不依赖于数据库功能。
注意事项
实现此功能需要仔细考虑潜在问题,例如:
免责声明:
MySQL中的InnoDB引擎不支持此功能。
以上是如何实现数据库中根据特定主键值单独自增序列?的详细内容。更多信息请关注PHP中文网其他相关文章!