SQL 2005 自增序列 如何清零?

sunboy_163 2010-10-18 04:52:40
系统开发了,把所有数据删除了,但所有表序表不是从1开始的。想着把所有表序列清零,干干净净的。

rt~~~

...全文
595 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞尘 2011-09-24
  • 打赏
  • 举报
回复
Truncate table tablename比较简单实用
sunboy_163 2010-10-18
  • 打赏
  • 举报
回复
如何清除字段说明呀?
dawugui 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bancxc 的回复:]
truncate table tablename只是清除记录,不是让自增列归零.
难道我记错了
truncate
不触发触发器
不记日志
identity清零
[/Quote]
是我记错了.

SQL Server 自增字段归零

SQL Server 2005表自增字段在多次插入数据后,自增的ID号比较混乱,而且删除数据后,自增的ID并不会归零,有两种方法可以控制自增的字段:

方法一: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数

truncate table 表名

方法二: dbcc checkident ('table_name', reseed, new_reseed_value) 当前值设置为 new_reseed_value。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。

方法二不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。

当表中有了一下数据后
执行语句 DBCC CHECKIDENT ('dbo.Person', RESEED, 10) 后再通过Management Studio添加数据时,ID就会自动从11开始,也就是new_reseed_value+1开始
bancxc 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dawugui 的回复:]

引用 1 楼 bancxc 的回复:
truncate table tablename

truncate table tablename只是清除记录,不是让自增列归零.
[/Quote]难道我记错了
truncate
不触发触发器
不记日志
identity清零
dawugui 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bancxc 的回复:]
truncate table tablename
[/Quote]
truncate table tablename只是清除记录,不是让自增列归零.
sunboy_163 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bancxc 的回复:]
truncate table tablename
[/Quote]

顺便在问下你,能不能把表所有字段备注说明也一起删除了?
sunboy_163 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bancxc 的回复:]
truncate table tablename
[/Quote]

想马上结贴,还结不了。稍后晚上给你结分~~
bancxc 2010-10-18
  • 打赏
  • 举报
回复
truncate table tablename

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧