如何解决使用触发器时的控制号问题

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')