MySQL 字段 AUTO_INCREMENT 根据 YEAR

Posted

技术标签:

【中文标题】MySQL 字段 AUTO_INCREMENT 根据 YEAR【英文标题】:MySQL Field AUTO_INCREMENT according to YEAR 【发布时间】:2015-08-23 23:58:46 【问题描述】:

我有一张账单表,我需要使用以下格式创建 ID 字段(主键):

YYYYXXXX -> YEAR+INT(4) Auto_increment

例如:20150000, 20150001, ...., 20159999

它应该在年底关闭并在明年从零开始:2016000020160001,... 也可以手动更改它。

也许你们中的一些人可以帮助我,因为我是 mysqlphp 的新手。

谢谢

【问题讨论】:

“可以手动更改”是什么意思?顺便说一句:您只是在寻找mysql的解决方案,因为设置主键不涉及php。 没有。你不需要 auto_increment 来做到这一点。原因很简单——它的存在只是为了让数据库中的一行可以有一些独特的东西。它不包含有关年份、您的姓名或您认为应该包含的任何内容的数据。唯一的工作就是为行指定一个唯一的编号。它也用于很多内部优化——所以你千万不要碰它。我写的所有内容都意味着您正在查看该任务的错误列。无需将两条数据保存到 1 列,只需制作 2 列。当您提取数据时,将 auto_increment 与日期粘合。容易。 【参考方案1】:

您需要更新自动增量计数器来实现这一点。附上示例代码。

ALTER TABLE  `TABLE_NAME` AUTO_INCREMENT =2015000;

但是,您需要确保在 2016 年初再次更新一次,例如:ALTER TABLE TABLE_NAMEAUTO_INCREMENT =2016000;

您可以创建一个 CRON 作业并在其中添加此条件逻辑:

alter.php:
<?php
 $conn = mysql_connect(.....);
 $selDb = mysql_select_db(....);
 $sql = 'ALTER TABLE  `TABLE_NAME` AUTO_INCREMENT ='.date("Y").'000';
 mysql_execute($sql);
?>

CRON:
1 1 1 1  * php alter.php

【讨论】:

以上是关于MySQL 字段 AUTO_INCREMENT 根据 YEAR的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础之 AUTO_INCREMENT

mysql插入数据不成功,核对字段及类型了,无误,怎么回事? id为AUTO_INCREMENT

MySQL 序列使用:使用 AUTO_INCREMENT获取AUTO_INCREMENT值

MySQL 序列 AUTO_INCREMENT

验证:mysql AUTO_INCREMENT 默认值是1

(MYSQL) Auto_increment 基于另一个表的最大 id 的临时表?