在SqlServer中实现自定义编号(包括触发器和存储过程)
发布时间
阅读量:
阅读量
近期在实际操作中遇到了需要生成自定义编号的需求,首先需要明确该编号的组成结构,即“标识”与“日期”以及“三位数的流水号”三部分组合而成。其实现方式较为基础,核心在于定位对应标识下当前最大的流水号,并在此基础上加1,从而生成新的编号。在具体实施过程中,采用了两种方法:触发器和存储过程。此外,该功能同样可以通过Java代码实现,但现阶段仅考虑在数据库层面完成相关操作。
触发器
在使用触发器的过程中,我没有对存储流水进行考虑,而是每次直接定位到最新的流水号并在此基础上加1,随后生成新的流水号。
CREATE TRIGGER QUALITY_FOLLOW_Trigger
ON BI_QUALITY_FOLLOW
AFTER INSERT
AS
BEGIN
-- 获取当前日期
DECLARE @CurrentDate varchar(10) = FORMAT(GETDATE(), 'yyyyMMdd');
-- 获取插入的数据中的最大流水号
DECLARE @MaxSerialNumber INT = 0;
SELECT @MaxSerialNumber = ISNULL(MAX(SUBSTRING(EVENT_NO, 11, 8)), 0) FROM BI_QUALITY_FOL
全部评论 (0)
还没有任何评论哟~
