Advertisement

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

还没有任何评论哟~