如何才能让mysql自动递增的字段重新从1开始呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何才能让mysql自动递增的字段重新从1开始呢相关的知识,希望对你有一定的参考价值。

mysql 让主键ID 自动递增,但是删除一些数据后,自动递增是从最大的序号开始的,怎么才能保持ID 的连续性呢?
并且不要删除数据,求高手指点

参考技术A 把ID列删了,重新建一个ID列,设置为自动递增
,注意备份

自动递增 - 每年自动重置

【中文标题】自动递增 - 每年自动重置【英文标题】:Auto-increment - automatic reset for each year 【发布时间】:2015-07-21 22:51:42 【问题描述】:

MySQL/InnoDB

就我而言,我的收据应按年计算; 1/2015、2/2015 ... 556/2015 等等。明年来的时候,计数器应该重新从1开始,收据应该算作1/2016,2/2016 ...

如何定义每年自动重置的auto_increment字段?

RCID | RCNO | RCYEAR | ...
=====+======+========+====
 200 |    1 |   2015 |
 201 |    2 |   2015 |
 ... |  ... |   2015 |     
 756 |  556 |   2015 |     <- last receipt in 2015
 757 |    1 |   2016 |     <- yearly counter restarted

注意:RCID 是标准 PK 自动递增字段。

【问题讨论】:

你必须用触发器做到这一点 【参考方案1】:

在@RickJames 的帮助下,解决方案是:

CREATE TRIGGER ReceiptNumber BEFORE INSERT ON receipts FOR EACH ROW
BEGIN
  SET NEW.rcyear=YEAR(NOW());
  SET NEW.rcno=(SELECT IFNULL(MAX(rcno),0)+1 FROM receipts WHERE rcyear=YEAR(NOW()));
END;

【讨论】:

以上是关于如何才能让mysql自动递增的字段重新从1开始呢的主要内容,如果未能解决你的问题,请参考以下文章

如何让mysql的自动递增的字段重新从1开始

如何让mysql从前一行值开始自动递增

自动递增 - 每年自动重置

MySQL自动递增自定义值

Mysql中怎么使设置了自动增加的id,实现动态更新?

建表时,如何让mysql标识列ID从1开始自动增长