Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除SQL Server中的记录后重置?

删除SQL Server中的记录后重置?

提问于 2017-12-21 02:35:06
回答 2关注 0查看 414

我已经将记录插入到SQL Server数据库表中。该表有一个主键定义和自动增量身份设置为“是”。这主要是因为在SQL Azure中,每个表都必须定义一个主键和标识。

但是由于我不得不从表中删除一些记录,这些表的标识会受到干扰,索引列(自动生成的增量为1)会受到干扰。

在删除记录后,如何重置标识列,以便列的顺序按照升序排列?

回答 2

嗨喽你好

发布于 2017-12-21 03:22:33

代码语言:txt
AI代码解释
复制
DBCC CHECKIDENT ('TestTable', RESEED, 0)
代码语言:txt
AI代码解释
复制
GO

其中0是identity起始值

以往V

发布于 2017-12-21 03:22:09

该DBCC CHECKIDENT管理命令用来复位身份计数器。命令语法是:

代码语言:txt
AI代码解释
复制
DBCC CHECKIDENT (table_name [, { NORESEED | { RESEED [, new_reseed_value ]}}])
代码语言:txt
AI代码解释
复制
[ WITH NO_INFOMSGS ]
代码语言:txt
AI代码解释
复制
例:
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
DBCC CHECKIDENT ('[TestTable]', RESEED, 0);
代码语言:txt
AI代码解释
复制
GO

以前版本的Azure SQL数据库不支持此功能,但现在受支持。

请注意,根据文档,new_reseed_value参数在SQL Server版本中有所不同:

如果表中存在行,则使用new_reseed_value值插入下一行。在版本SQL Server 2008 R2和更早版本中,插入的下一行使用new_reseed_value +当前增量值。

但是,我发现这个信息误导(实际上只是错误),因为观察到的行为表明至少SQL Server 2012仍然使用new_reseed_value +当前增量值逻辑。微软甚至与自己Example C在同一页面上发现的矛盾:

C.迫使当前的身份价值达到一个新的价值

以下示例强制AddressType表中的AddressTypeID列中的当前标识值的值为10.由于该表具有现有行,因此插入的下一行将使用11作为该值,也就是定义的新的当前增量值列值加1。

代码语言:txt
AI代码解释
复制
USE AdventureWorks2012;  
代码语言:txt
AI代码解释
复制
GO  
代码语言:txt
AI代码解释
复制
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);  
代码语言:txt
AI代码解释
复制
GO

尽管如此,所有这些都为更新的SQL Server版本留下了不同的行为选项。我想唯一的方法是确保,直到微软清理自己的文档中的东西,是使用前做实际测试

和开发者交流更多问题细节吧,去 写回答
相关文章
SQL:删除表中重复的记录
--创建测试表 if object_id('test') is not null drop table test create table test ( id int identity(1,1) primary key, name varchar(50) ) --插入几条测试数据 insert into test select 'a' union all select 'a' union all select 'a' union all select 'a' union all select 'a
用户8983410
2021/11/02
5.9K0
SQL Server重置自增的值为0
提出问题: 随时测试的越多,自增的ID就越大,那么就要想办法进行恢复成初始的状态了。
手撕代码八百里
2020/07/28
2K0
SQL Server重置自增的值为0
SQL Server判断表中是否存在记录的SQL语句
SQL Server数据库判断记录是否存在,要不是语句不够简洁,要不就是性能有很大问题,简直就是忍无可忍!
跟着阿笨一起玩NET
2020/03/18
5.7K0
sql删除重复记录
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
王念博客
2019/07/24
2.5K0
sql删除一条记录后其他记录的id自动迁移,使id连续
在写一个应用时,有这么一个操作:客户端传过来点击的位置,进行运算后得到相应数据在数据库里的id,然后显示对应的信息。 但是在进行delete后数据显示就混乱了,发现根本原因是原本连续的数据id(例如:1、2、3、4),在sqlite的delete语句执行完后(比如说删除id为2的数据),变得不连续(1、3、4)。 删除后点击第三个数据,结果他显示成第二个,而第二个早就删除了,因此显示的信息完全混乱。 解决代码如下: 在执行删除时更新表,把删除位置后面的都往前移动一位 db.execSQL("delete
张拭心 shixinzhang
2022/11/30
1.5K0
删除SQL数据库表中的重复记录
在n条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复并保留一条呢?方法如下:
学派客
2023/04/07
5.2K0
sql删除wordpress没用的postmeta记录
支持多作者的wordpress博客,有时需要审核他们的文章内容,虽然UGC(User-generated content)整体是好的,但是也要控制一下质量,实在不相关或spam的文章就要毫不手软的删除。日志的记录已经删除了,但是日志扩展表 postmeta 里面的数据还没有删除,也人工清理下吧,减少数据库的占用
ytkah
2022/03/14
7890
记录下关于SQL Server的东西
定义一个递归CTE,至少需要两个查询(或者更多),第一个查询称为定位点成员(anchor member),第二个查询称为递归成员(recursive member),基本格式如下:
Jerremy
2022/05/09
1.5K0
记录下关于SQL Server的东西
SQL Server中的GUID
GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值。
全栈程序员站长
2022/07/15
6.2K0
【Oracle笔记】数据表中删除重复记录的SQL
  ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。   ROWID它是一个伪列,它并不实际存在于表中。它是ORACLE在读取表中数据行时,根据每一行数据的物理地址信息编码而成的一个伪列。所以根据一行数据的ROWID能找到一行数据的物理地址信息。从而快速地定位到数据行。数据库的大多数操作都是通过ROWID来完成的,而且使用ROWID来进行单记录定位速度是最快的。
程序员云帆哥
2022/05/12
3.4K0
SQL Server新建、修改、删除表结构。
1、点击[testdb] 2、点击[表] 3、点击[新建] 4、点击[表] 5、点击[列名] 6、点击[数据类型] 7、点击[nchar(10)] 8、点击[int] 9、点击[允许Null值] 10、点击[▲] 11、点击[设置主键] 12、点击[列名] 13、点击[数据类型] 14、点击[允许Null值] 15、点击[列名] 16、点击[数据类型] 17、点击[nchar(10)] 18、点击[int] 19、点击[文件]
裴来凡
2022/05/28
1.8K0
SQL Server新建、修改、删除表结构。
4 - SQL Server 2008 之 使用SQL语句删除表格
本文介绍了如何使用 SQL Server 2008 中的 SQL 语句删除表格。首先介绍了删除表格的语法,然后通过两个示例讲解了如何删除表格。第一个示例是删除名为 Employee 的表格,第二个示例是删除名为 Person 的表格。在删除表格之前,需要先判断该表格是否存在,如果不存在则不进行任何操作。同时,在删除含有外键的表格之前,需要先删除外键引用的主键表格,否则会报错。
CNXY
2017/12/25
1.6K0
4 - SQL Server 2008 之 使用SQL语句删除表格
SQL Server 2008中的hierarchyid
本人转载:http://www.cnblogs.com/chenxizhang/archive/2009/04/26/1444016.html
跟着阿笨一起玩NET
2018/09/18
2.2K0
js object 中删除某个元素并且重置obj[obj.splice(1,1)]
 for (var i = 0; i < old.length; i++) {         if(old[i].id==$(spanthis).data("id")){             // old[i].id=0;             // old[i].name='';             old.splice(i,1)         }
双面人
2019/04/10
6K0
SQL 删除重复记录,只保留一条记录
删除表中多余的重复记录,重复记录是根据单个字段(id)来判断,只留有rowid最小的记录 
用户8099761
2023/05/10
1.3K0
SQL Server 返回最后插入记录的自动编号ID
有三个比较类似的功能:他们分别是:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值。 IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。 @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。 SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值
全栈程序员站长
2021/08/12
2.7K0
SQL Server中QUOTENAME函数的使用
–功能:返回带有分隔符的Unicode 字符串,分隔符的加入可使输入的字符串成为有效的Microsoft SQL Server 2005 分隔标识符。
全栈程序员站长
2022/09/15
2.8K0
SQL server 数据库基本插入、删除命令
一、实验素材:附加学生信息表(student) 二、实验要求: 1、 查询student表中所有学生的信息 select * from student 2、 查询student表中“姓名”“所在班
L宝宝聊IT
2018/06/20
1.2K0
3 - SQL Server 2008 之 使用SQL语句删除约束条件
《3 - SQL Server 2008 之 使用SQL语句删除约束条件》介绍了如何使用SQL语句删除SQL Server 2008中的约束条件。基本语法为ALTER TABLE 表名 DROP CONSTRAINT 约束名1,约束名2……。如果删除一个约束,不需要逗号后的约束名,如果删除两个及两个以上的约束,必须以逗号隔开。例如,删除Employee表中的FK_PersonID外键约束及PK_EmployeeID主键约束的代码为:USE PersonInfo;GO;ALTER TABLE Employee DROP CONSTRAINT FK_PersonID,PK_EmployeeID;GO。该文还介绍了如何利用工具生成SQL语句删除约束条件,以及如何使用视图和T-SQL语句删除约束条件。"
CNXY
2017/12/25
1.6K0
3 - SQL Server 2008 之 使用SQL语句删除约束条件
discuz的ucenter密码忘记后重置
Discuz 的 UCenter 密码默认是首次安装discuz时指定的管理员密码
大大大黑白格子
2020/03/27
3.3K0
discuz的ucenter密码忘记后重置

相似问题

如何删除SQL Server中存在的表?

2560

如何计算SQL Server存储过程中删除的行数?

2655

如何计算SQL Server存储过程中删除的行数?

2277

在SQL Server数据库中删除部分日期时间的最佳方法?

2697

WordPress镜像重置域名后无法访问该如何重置?

1223
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
相关问答用户
到家集团 | 技术VP擅长5个领域
新浪微博 | 高级总监擅长4个领域
擅长5个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档