重建含Identity列的表后,原有分配的Identity值是否保留?
Identity列值在表重建时的保留规则
在SQL Server中,重建表时Identity列的原有值是否保留,完全取决于你重建表的具体操作方式:
如果重建过程是:创建包含新增列的新表结构(保留Identity属性),然后将原表数据完整导入新表(比如使用
SET IDENTITY_INSERT [新表名] ON后显式插入原Identity值,或者通过SELECT * INTO [新表名] FROM [原表名]直接复制数据和结构),那么原有Identity值会被完整保留。这也是你测试中出现的情况。如果重建时是先删除原表,重新创建表结构后,未显式指定Identity值就插入数据(且未开启IDENTITY_INSERT),那么数据库会自动从Identity的起始值开始重新分配数值,原有值就会丢失。
简单总结:只要在重建过程中把原表的Identity值完整迁移到新表,值就会保留;反之则会被重置。
内容的提问来源于stack exchange,提问作者J-V-D-A
相关产品推荐
相关产品推荐

