有没有人知道重用身份价值的巧妙技巧?

Joh*_*ren 0 sql t-sql sql-server

通常,当您指定标识列时,您将在SQL Server中获得一个方便的接口,用于请求特定行.

SELECT * FROM $IDENTITY = @pID
Run Code Online (Sandbox Code Playgroud)

如果是标识列,您实际上并不需要关注自己的名称,因为只能有一个.

但是,如果我有一个主要由临时数据组成的表,该怎么办?大量插入和大量删除.有没有一种简单的方法可以重用身份值.

我希望能够编写一个函数,该函数将返回说NEXT_SMALLEST($IDENTITY)下一个标识值并以故障安全方式执行.

基本上找到未使用的最小值.这并不是一件容易的事,但我想要的是能够告诉SQL Server这是我的函数,它将生成身份值.但我所知道的是,没有这样的功能......

我想要...

实现全局数据库ID,我需要提供一个我可以控制的默认值.

我的想法是基于我应该能够拥有一个包含所有已知ID的表,然后来自其他需要全局ID的表的每一行ID都会引用该表.默认值将由类似的东西提供

INSERT INTO GlobalID
RETURN SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)

Noo*_*ilk 5

没有; 如果可以重复使用它并不是唯一的.

你为什么要重复使用它们?你为什么要关心这个领域?如果你想控制它,不要把它作为一个身份; 创建自己的方案并使用它.