alj*_*alj 3 sql-server sql-server-2012
我创建了一个表并向其中插入了 4 行。我运行了以下查询
SELECT seed_value as SeedValue, last_value as identityValue
FROM sys.identity_columns
WHERE object_id=OBJECT_ID('ALJtest1')
Run Code Online (Sandbox Code Playgroud)
并得到结果为
SeedValue| identityValue
-------------------------
1 | 4
Run Code Online (Sandbox Code Playgroud)
然后我使用重新播种该表
DBCC CHECKIDENT('DBO.ALJtest1', RESEED, 10)
Run Code Online (Sandbox Code Playgroud)
当我这次运行以下查询时
SELECT seed_value as SeedValue, last_value as identityValue
FROM sys.identity_columns
WHERE object_id=OBJECT_ID('ALJtest1')
Run Code Online (Sandbox Code Playgroud)
我得到的结果是
SeedValue| identityValue
-------------------------
1 | 10
Run Code Online (Sandbox Code Playgroud)
有没有办法找到 SQL Server 2012 中表上最后应用的种子值?
RESEED尽管有名称,但不会更改身份的种子值,而只是设置要生成的下一个身份值。创建标识列后,无法更改其实际种子值。从文档中:
种子值是插入到加载到表中的第一行的标识列中的值。所有后续行都包含当前标识值加上增量值,其中当前标识值是为表或视图生成的最后一个标识值。
您不能用于
DBCC CHECKIDENT执行以下任务:
- 更改创建表或视图时为标识列指定的原始种子值。
- 重新设定表或视图中现有行的种子。
要更改原始种子值并重新设定任何现有行的种子,您必须删除标识列并重新创建它并指定新的种子值。当表包含数据时,标识号将添加到具有指定种子和增量值的现有行中。不保证行更新的顺序。
所以回答你的问题:不,没有办法知道 a 中指定的最后一个值DBCC CHECKIDENT(..., RESEED),因为当前的标识值在插入后可能已经改变了。
| 归档时间: |
|
| 查看次数: |
2290 次 |
| 最近记录: |