如何解决使用触发器时的控制号问题
how to fix my control number problem im using trigger
大家好,这是我的触发代码,在用户插入数据和 select 公关日期后,它将在数据库中生成一个控制编号,但我的问题是当用户选择一个pr_date 即 01-28-2021,添加记录后它在数据库中显示一个值 202103-1 它必须显示一个值 202101-1
BEGIN
SET @v1 = (SELECT control_number FROM tbl_worklog where DATE_FORMAT(pr_date,'%Y%m') =DATE_FORMAT(NOW(),'%Y%m') ORDER BY id DESC LIMIT 1);
IF (@v1 is null) THEN
SET new.control_number = (CONCAT(CAST(DATE_FORMAT(NOW(),'%Y%m') as CHAR),"-1"));
ELSE
SET @v2 = (CAST(SUBSTRING_INDEX(@v1,"-",-1) as int)+1);
SET new.control_number = (CONCAT(CAST(DATE_FORMAT(NOW(),'%Y%m') as CHAR),"-",CAST(@v2 as char)));
END IF;
END
要确定控制编号,您使用的是公式
DATE_FORMAT(NOW(), '%Y%m')
这将查看当前日期,这就是为什么您会得到 202103
(目前是三月,第三个月)。您应该改用
DATE_FORMAT(pr_date, '%Y%m')
大家好,这是我的触发代码,在用户插入数据和 select 公关日期后,它将在数据库中生成一个控制编号,但我的问题是当用户选择一个pr_date 即 01-28-2021,添加记录后它在数据库中显示一个值 202103-1 它必须显示一个值 202101-1
BEGIN
SET @v1 = (SELECT control_number FROM tbl_worklog where DATE_FORMAT(pr_date,'%Y%m') =DATE_FORMAT(NOW(),'%Y%m') ORDER BY id DESC LIMIT 1);
IF (@v1 is null) THEN
SET new.control_number = (CONCAT(CAST(DATE_FORMAT(NOW(),'%Y%m') as CHAR),"-1"));
ELSE
SET @v2 = (CAST(SUBSTRING_INDEX(@v1,"-",-1) as int)+1);
SET new.control_number = (CONCAT(CAST(DATE_FORMAT(NOW(),'%Y%m') as CHAR),"-",CAST(@v2 as char)));
END IF;
END
要确定控制编号,您使用的是公式
DATE_FORMAT(NOW(), '%Y%m')
这将查看当前日期,这就是为什么您会得到 202103
(目前是三月,第三个月)。您应该改用
DATE_FORMAT(pr_date, '%Y%m')