MySql中包含年和月的java自动增量
我有一张桌子叫>;具有项目估算投标编号自动递增字段的项目,名为Project_ID
此字段是自动递增的。我将其创建为一个8位字符的字段,其中包含字段规则
我需要它自动递增为两个数字年,两个数字月,包括一个连字符,然后是一个从001开始的数字,用于该时间段的第一个记录
An example for the month of April 2012 would be 1204-001 for the first record, 1204-002 for the 2nd and etc. then when the month of May rolls around the Project_ID would change to 1205-001.
我一直试图写的如下,我把它作为一个简单的默认表达式,默认值为
Cyear(date()) + (month()) + “-“ + “001” .
我是如何做到这一点的
# 1 楼答案
这个可能看起来有点奇怪,所以我只解释一下流程:
我使用
INSERT INTO ... SELECT
,以便检查table_name
中的现有数据,查看是否已经存在任何现有案例。该WHERE
将发现现有病例,多亏了RIGHT
和LEFT
这两种方法,不难找出所需的相关数据。如果没有找到行,则使用'001'
,然后只需分配现有列,如图所示# 2 楼答案
我已经完全解决了,看一看
首先,您必须获取一个示例表,其中的列将与原始表中的列相同,但列
project_id
除外然后首先在原始表中插入一行,其中列
project_id
=0的值和其他列为null,只需像这样手动插入第一行然后在示例表上创建一个触发器,如下所示
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
分隔符
在
try
上插入后创建触发器t每行
开始
声明v int
声明c int
设置v=(从
original
中选择max(project_id
)如果(v=0),则
插入到
original
集中project_id
=concat((选择concat(右(子字符串索引((选择*自(选择curdate()自try
限制1)作为a),'-','1'),2),右(子字符串索引((选择*自(选择curdate()自try
限制1)作为a),'-','2'))从try
限制1),'-001')project
=新的project
否则
设置c=(从
original
中选择右(project_id
)作为x,从original
限制1中选择3)插入到
original
集中project_id
=concat((从try
limit 1中选择*子字符串索引((从try
limit 1中选择*作为a),'-','1'),2),右(从try
limit 1中选择*子字符串索引((从try
limit 1中选择*作为a),'-','2'),2))从try
limit 1),concat('-00',c+1,1))project
=新的project
从
original
中删除限制1如果结束
完;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在上面的触发器中,我的示例表是
try
(project
文本),原始表是original
(project_id
文本,project
文本)在示例表上创建类似这样的触发器后,开始在示例表中插入行,这些行将自动插入原始表中的
project_id
列中的自动增量值,如。。1405-001,1405-002,1405-003.... 其中14
为2014
,05
为May
,其余为使用触发器递增的自动递增值只要遵循以上步骤,你的问题一定会得到解决
# 3 楼答案
基本上,您可以在希望列递增的表上使用INSERT
TRIGGER
之前使用以下是创建简单算法并将此代码放入触发器的一些步骤: