`

关于SQL中自动增长列值回复(还原)的问题

阅读更多

 大家都知道,只要有新加记录,SQL中自动增长字段的值总是自动累加的(假设是加1),即使这条记录后来被删除了,但这个值照样已经“被使用过了”。

举例说,当前表中这个自增长字段最大值是10,后来插入了两条记录,这个字段值就先后变成了11,12.再后将11、12这两条记录删除了,但以后再插入记 录时,这个字段值会变成13,而不会是11.因此,我在想,在数据库中,一定有个地方存储这个自增长字段已经增长到哪个量了,如果找到这个地方,并将记录 的这个量改回(比如改回10),那么中间就不会有空白了。

那么,这个地方到底在哪呢?能不能改呢?

 

即:

SET IDENTITY_INSERT 表 ON
--再插入之前删除的值
SET IDENTITY_INSERT 表 OFF

 

eg:

create table tb(id int identity ( 1 , 1 ),name varchar ( 10 ))

insert into tb(name) select ' abc '

insert into tb(name) select ' sfd '

insert into tb(name) select ' efawe '

insert into tb(name) select ' asdf2 '

insert into tb(name) select ' efw '

insert into tb(name) select ' afsd '

insert into tb(name) select ' asdf2 '

insert into tb(name) select ' 2fsf '

insert into tb(name) select ' cawe '

insert into tb(name) select ' sdf2qe '

go

select * from tb

delete from tb where id = 9 or id = 10

select * from tb

go

SET IDENTITY_INSERT tb ON

insert into tb(id,name) select 9 , ' u2478f '

insert into tb(id,name) select 10 , ' nv9oawe '

insert into tb(id,name) select 11 , ' adfunsdf '

insert into tb(id,name) select 12 , ' vno9af '

SET IDENTITY_INSERT tb OFF

-- 下面用新的标识值,当插入值大于原标识值时,自动更改标识,但不能向下改,如果你要向下改,只能不用标识,如上面所示.

insert into tb(name) select ' 3awef '

insert into tb(name) select ' faerq3 '

select * from tb

go

drop table tb

 

同时可以用以下命令查看自增长字段的值:

                    dbcc checkident (表名TableName)

分享到:
评论
2 楼 lzz3717845 2016-10-12  
有道理,受教了~谢谢
1 楼 sangumaolv2 2015-05-14  
你TM在说什么啊。。。。

相关推荐

    sqlserver创建自动增长列

    sqlserver 创建自动增长列的方法,返回最后插入记录的自动编号

    服务器SQL Server 自动定时备份和还原的工具

    本工具是自己开发的,用于SQL Server 数据库的备份与还原用,有了本工具,设定好每一个数据库的备份时间,可以按年、月、日、时、分设置好后,到时间自动备份,工具还有备份数据为多少天前的可以自动删除,同时也有...

    SQL Server中实现字段值自动增长且连续.pdf

    二是删除表中的记录后,自动增长列的值会出现不连续的现象,因为SQL Server不支持自动更新自动增长列的值,也不允许自动增长列存在NULL值或默认值。 为了解决这些缺陷,引入了第二种方法,即通过创建一个自定义函数...

    将Sql Server 2000中的数据库备份文件还原到sql2005中

    将Sql Server 2000中的数据库备份文件还原到Sql Server 2005中是一个常见的问题。在这个过程中,我们需要了解Sql Server 2000和Sql Server 2005之间的差异,以便正确地还原数据库备份文件。下面是相关的知识点: 1....

    SQL获取刚插入的记录的自动增长列ID的值

    在本例中,我们关注的是如何在SQL中获取刚插入记录的自动增长列(通常是主键)的值。我们将探讨SQL Server 2000和SQL Server 2005及以上版本的不同处理方式,以及如何在C#环境中使用这些方法。 首先,我们创建了一...

    sqlserver自动增长列引起的问题解决方法

    在SQL Server中,自动增长列是一种特殊的列类型,通常用于主键或唯一标识符,它会自动为每一行分配一个唯一的数值,无需手动输入。这种列的设置有助于确保数据的完整性,因为它能防止重复值的插入。然而,在某些操作...

    关于sql中求平均值出现null值的解决方案

    "关于sql中求平均值出现null值的解决方案.txt"和"注释.txt"可能包含了更详细的解释和示例代码,而"更新说明.txt"则可能记录了这些解决方案的更新和改进。如果你在实际操作中遇到困难,可以查阅这些文件获取更多信息...

    sql server 中如何增加递增的序号列【实用】

    sql server 中如何增加递增的序号列 sql server 是一种功能强大且广泛应用的关系数据库管理系统,随着业务的发展和数据的增长,对于数据的管理和处理变得越来越重要。在 sql server 中,增加递增的序号列是非常...

    SQL server列自动增加方法

    在SQL Server数据库设计中,有时候我们需要创建一个列,它的值能自动递增,这通常用于主键字段,确保每一行数据都有唯一的标识。这个特性在SQL Server中被称为“标识列”(Identity Column)。下面我们将详细讲解...

    sql多行转列

    主要是关于sqlserver的多行转列的问题,这是我经过个人测试的语句。

    SqlServer查询当下数据库还原状态

    在SQL Server环境中,了解当前正在进行的数据库还原操作的状态对于DBA(数据库管理员)或开发人员来说至关重要。这不仅能帮助他们监控还原进度,还能确保数据库在还原过程中不会出现异常中断或其他问题。下面将详细...

    Sql数据自动备份和还原工具

    在描述中提到的“Sql数据自动备份和还原工具”具有友好的用户界面和强大的功能。全量备份会复制整个数据库,而增量备份仅记录自上次备份以来的更改,差异备份则记录自上次全量备份以来的更改。这些备份类型的选择...

    SQL Server批量还原工具.rar

    描述中的“服务器维护VIP工具”暗示了该工具在服务器维护工作中扮演着重要角色,可能包含了一些高级特性,如自动检测备份文件、智能分析恢复策略、支持不同版本的SQL Server等,以满足VIP级别的服务需求。...

    SqlServer数据库的备份与还原

    在SqlServer2017中,可以采用手动备份和自动备份两种方式进行数据库的备份,同时在必要时进行还原操作。 首先,我们来了解手动备份。手动备份是通过SQL Server Management Studio(SSMS)这个工具来完成的。操作...

    SQL_SERVER_2000手动、自动备份和还原

    SQL_SERVER_2000手动、自动备份和还原 SQL Server 2000 数据库备份和还原是数据库管理员最重要的任务之一。备份可以防止数据丢失,确保数据安全,而还原可以快速恢复数据库,减少停机时间。本文将详细介绍 SQL ...

    解决sqlserver 2012 重启服务ID自动增长1000的问题

    在SQL Server 2012中,用户可能会遇到一个特定问题,即在重启数据库服务后,自增ID字段(如主键)会自动跳过1000个值。这可能会对数据一致性造成影响,尤其是在有严格顺序需求或依赖于这些ID的业务逻辑中。本文将...

    SQL Server设置主键自增长列(使用sql语句实现)

    在SQL Server数据库中,主键自增长列是一个重要的特性,它允许你在插入新记录时自动为该列生成唯一的标识符,通常用于唯一地标识表中的每一行。这在处理大量数据时尤其有用,因为它简化了数据插入过程,你无需手动为...

    SQLServer数据库还原问题

    This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

    SQLServer2008R2数据库备份与还原操作文档.pdf

    SQLServer2008R2数据库备份与还原操作文档.pdf

Global site tag (gtag.js) - Google Analytics