在 Management Studio 中创建身份列时为其播种。
如果使用代码创建表,则可以使用以下形式的 Transact-SQL (T-SQL) CREATE TABLE 语句轻松地为表的标识列设定种子:
CREATE TABLE tablename
(
columnname datatype identity [(seed, increment)
[NOT FOR REPLICATION]],
[columnname ...]
)
在代码中,数据类型是数值列。种子和增量都是可选的,两者的默认值都是 1。
图 B 显示了使用 CREATE TABLE 创建名为 Orders 的表并将 OrderID 列的标识种子和增量值分别设置为 100 和 10 的结果。如您所见,第一个标识值为 100,随后的每个值增加 10。(您可以通过为增量指定负值来减小标识值。)
并使用 CREATE TABLE 播种标识列。
检查和重新播种
例如,如果您将表的所有记录复制到存档表,然后删除源表中的所有记录,您可能希望重新设定源表的标识列的种子,以便控制顺序。如下使用 T-SQL 的 DBCC CHECKIDENT 重新设定标识列的种子:
DBCC CHECKIDENT
(
tablename
[, [NORESEED | RESEED [, newreseedvalue]]]
)
[WITH NO_INFOMSGS]
表 A 定义了该语句的可选参数。
表 A:DBCC CHECKIDENT
范围
描述
NORESEED 返回当前标识值和标识列的当前最大值,无需重新设定种子。这些值通常(并且应该)相同。
RESEED 如果当前标识值小于标识列中存储的最大标识值,则使用标识列中的最大值更改当前标识值。
newreseedvalue 指定重新播种时的新种子值。如果表为空,则第一个标识值(在执行 DBCC CHECKIDENT 之后)将等于 newreseedvalue。如果表包含数据,则下一个标识值将等于 newreseedvalue + 当前增量值(默认值为 1)。此行为是 SQL Server 2005 的新行为(并且在 2008 中仍然存在)。SQL Server 2000 总是递增种子值。
WITH NO INFOMSGS 禁止所有信息性消息。
从技术上讲,DBCC CHECKIDENT 检查并更正标识值。简单地说,使用它来学习当前的身份值或重新设定现有的身份列。