首页 > 解决方案 > 通过将 1 添加到最后一个数据来将新数据添加到数据库

问题描述

我在数据库中有一个数据列表。我需要在状态从数据库中的“新建”更改为“使用中”后自动插入新数据,方法是在“结束范围”中添加 1 以获得下一个“开始范围”。对于结束范围,它将使用“FFFF”添加新的开始范围。范围是十六进制格式。

例如,之前的开始和结束范围是 10120000、1012FFFF。对于需要插入的下一个新范围,它将采用 1012FFFF 并加上 1。因此下一个数据的起始范围应该是 10130000。而对于结束范围,它将加上 10130000 和 FFFF 和结果是 1013FFFF。

插入的下一个范围的状态将分配为“新”。

我怎样才能为与先前范围具有相同格式的新范围执行此操作?我应该创建触发器吗?

db中的数据示例

1

标签: sql-server

解决方案


“顺序”是最好的解决方案

在此处输入图像描述

通过此脚本,您可以在 sql server 中创建序列

CREATE SEQUENCE [dbo].[Seq1] AS [bigint]
 START WITH 1010
 INCREMENT BY 1
 MINVALUE -9223372036854775808
 MAXVALUE 9223372036854775807
 CACHE 
GO

通过此代码,您可以获得新的价值

SELECT NEXT VALUE FOR seq1;

并插入时间

INSERT INTO TableName (StartRange)
VALUES(SELECT NEXT VALUE FOR seq1);

最后完整样本

DECLARE @StartRange varchar(4);
exec sp_executesql N'SELECT @StartRange = (NEXT VALUE FOR [dbo].seq1)', N'@StartRange int output', @StartRange = @StartRange output;

INSERT INTO TableName (StartRange, EndRange, Status)
SELECT  @StartRange  + '0000'   AS  StartRange
        ,@StartRange + 'FFFF'   AS  EndRange
        ,'In Use'               AS  Status


推荐阅读