我的项目中有一些东西需要在字段中显示下一个主键而不物理插入记录?
如何在不插入记录的情况下知道主键的下一个值?
即 让我们有 10 条记录,以 ID 列作为主键。 现在我已经删除了第 10 条记录,因此下一个值为 11。
我想知道下一个主键的值(在我的例子中是 11),而不需要在表中物理插入记录。
简而言之,主键 future 的下一个值。
我怎样才能得到它?
请提供解决方案。
最佳答案
编辑(非常重要)
需要注意的是,该方法可以用来预测下一个id,但不保证该值。其原因是正如 @marc_s 在注释中提到的,在您请求该值的时间和您使用该值的时间之间,另一个事务可能已插入到该表中,从而使检索到的值的假设无效。
如上所述,如果您的实现基于这样的假设,那么您就犯了一些设计错误,并且应该首先考虑重新设计此解决方案。
来自IDENT_CURRENT (Transact-SQL)
Returns the last identity value generated for a specified table or view. The last identity value generated can be for any session and any scope.
看看下面的例子
CREATE TABLE #Table (
ID INT IDENTITY(1,1),
Val INT
)
INSERT INTO #Table SELECT 1
INSERT INTO #Table SELECT 2
INSERT INTO #Table SELECT 3
SELECT * FROM #Table
DELETE FROM #Table WHERE ID >= 2
SELECT * FROM #Table
SELECT IDENT_CURRENT('#Table')
DROP TABLE #Table
关于sql - 如何在不插入sql server记录的情况下知道表的下一个主键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8612580/