gpt4 book ai didi

java - MySql中的自动增量,包括年和月

转载 作者:可可西里 更新时间:2023-11-01 06:50:06 24 4
gpt4 key购买 nike

我有一个名为 > Project 的表,其中包含名为 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” . 

我是如何做到这一点的?

最佳答案

基本上,您可以在要增加列的表上使用 BEFORE INSERT TRIGGER

以下是创建简单算法并将此代码放入触发器中的一些步骤:

// get current YEAR
SET @cur_Year = CONCAT(DATE_FORMAT(CURDATE(), '%Y'));
// get current MONTH
SET @cur_MONTH = CONCAT(DATE_FORMAT(CURDATE(), '%m'));
// concatenate YEAR and MONTH
SET @Year_Month = CONCAT(@cur_Year, @cur_MONTH);
// get the last value for the current YEAR and MONTH
SET @max_ID = ( SELECT MAX(ID)
FROM tableName
WHERE ID LIKE CONCAT(@Year_Month, '-%'));
// get the last three characters from the id, convert in to
// integer and increment by 1
SET @last_ID = CAST(RIGHT(@max_ID, 3) AS SIGNED) + 1;
// pad zero on the left using LPAD and
// concatenate it with YEAR and MONTH
SET @new_ID = CONCAT(@Year_Month,'-',LPAD(CAST(@last_ID AS CHAR(3)), 3, '0'));

关于java - MySql中的自动增量,包括年和月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14828807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com