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
它应该在年底关闭并在明年从零开始:20160000
,20160001
,...
也可以手动更改它。
也许你们中的一些人可以帮助我,因为我是 mysql 和 php 的新手。
谢谢
【问题讨论】:
“可以手动更改”是什么意思?顺便说一句:您只是在寻找mysql的解决方案,因为设置主键不涉及php。 没有。你不需要 auto_increment 来做到这一点。原因很简单——它的存在只是为了让数据库中的一行可以有一些独特的东西。它不包含有关年份、您的姓名或您认为应该包含的任何内容的数据。唯一的工作就是为行指定一个唯一的编号。它也用于很多内部优化——所以你千万不要碰它。我写的所有内容都意味着您正在查看该任务的错误列。无需将两条数据保存到 1 列,只需制作 2 列。当您提取数据时,将 auto_increment 与日期粘合。容易。 【参考方案1】:您需要更新自动增量计数器来实现这一点。附上示例代码。
ALTER TABLE `TABLE_NAME` AUTO_INCREMENT =2015000;
但是,您需要确保在 2016 年初再次更新一次,例如:ALTER TABLE TABLE_NAME
AUTO_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插入数据不成功,核对字段及类型了,无误,怎么回事? id为AUTO_INCREMENT