Declare @IdentityTable sysname,
@IdentityColumn sysname,
@TotalRows int,
@i int,
@Iden int,
@Sql varchar(4000)

SET NOCOUNT ON
--标识列表
Create Table #IDENTITY_Table
(
SeqID_int int identity(1,1),
IDENTITY_TABLE sysname null,
IDENTITY_COLUMN sysname null,
IDENTITY_MAX int null default(0)
)
Create Table #IDENTITY_Table_Column_Value
(
IDENTITY_MAX int
)
Insert Into #IDENTITY_Table(IDENTITY_TABLE,IDENTITY_COLUMN)
Select --'select IDENT_CURRENT(''' + Obj.name + ''')',
Obj.name,
Col.name
From sys.tables AS Obj left outer join sys.columns AS Col on Obj.object_id = Col.object_id
and Col.is_identity = 1
Where Obj.type = 'U'
and objectproperty(object_id(Obj.name),'TableHasIdentity') = 1;

Set @TotalRows = @@ROWCOUNT;
Set @i = 1;
--循环得到每一个标识列表,然后更新为当前最大标识列值
WHILE(@i <= @TotalRows)
Begin

Select @IdentityTable = IDENTITY_TABLE,
@IdentityColumn = IDENTITY_COLUMN
From #IDENTITY_Table
Where SeqID_int = @i;

Set @Sql = 'Insert into #IDENTITY_Table_Column_Value' + char(10) + 'select max(' + @IdentityColumn + ') + 1 from ' + @IdentityTable;
--print @Sql
EXEC (@Sql);

Select @Iden = IDENTITY_MAX from #IDENTITY_Table_Column_Value;
Set @Iden = IsNull(@Iden,1)

update #IDENTITY_Table
set IDENTITY_MAX = @Iden
where IDENTITY_TABLE = @IdentityTable;
--DBCC CHECKIDENT( @IdentityTable, RESEED, @Iden )
--print @IdentityTable + ',' + cast(@Iden as varchar(10))

Set @i = @i + 1;
Set @Iden = 0
Set @Sql = ''

truncate table #IDENTITY_Table_Column_Value
End
/*
Truncate Table #IDENTITY_Table;
Drop Table #IDENTITY_Table;
truncate table #IDENTITY_Table_Column_Value
drop table #IDENTITY_Table_Column_Value
*/
SET NOCOUNT OFF
-----------------------------------------------

--select 'DBCC CHECKIDENT(' + IDENTITY_TABLE + ',RESEED, ' + cast (IDENTITY_MAX as varchar(10)) + ')' from #IDENTITY_Table

select * from #IDENTITY_Table

转载于:https://www.cnblogs.com/xishi/p/5479071.html

SQL 重置自增列的值 批量处理相关推荐

  1. SQL中获取刚插入记录时对应的自增列的值

    --创建数据库和表 create database MyDataBase use MyDataBase create table mytable ( id int identity(1,1), nam ...

  2. oracle sql 拼接遇到参数值,sql 将某一列的值拼接成字符串

    ) set @str='' -- 必须先赋值 ))+',' from( select [objid],sfrq from tablename ) tb order by tb.sfrq print @ ...

  3. MySQL内核月报 2015.01-MySQL · 捉虫动态· InnoDB自增列重复值问题

    问题重现 先从问题入手,重现下这个bug 这里我们关闭mysql,再启动mysql,然后再插入一条数据 我们看到插入了(2,2),而如果我没有重启,插入同样数据我们得到的应该是(4,2). 上面的测试 ...

  4. SQL Server:向 SQL Server 自增字段插入值 (转)

    SQL Server:向 SQL Server 自增字段插入值 [鹏城万里] 发表于 www.sqlstudy.com 通常情况下,不能向 SQL Server 自增字段插入值,如果非要这么干的话,S ...

  5. SQL Server 重置Identity标识列的值(INT爆了)

    一.背景 SQL Server数据库中表A中Id字段的定义是:[Id] [int] IDENTITY(1,1),随着数据的不断增长,Id值已经接近2147483647(int的取值范围为:-2 147 ...

  6. Sql Server中查看/修改identity(自增列)的值

    查看某个表中的自增列当前的值:DBCC   CHECKIDENT   (TableName) 修改某个表中的自增列当前的值:DBCC   CHECKIDENT   (TableName,   RESE ...

  7. html连接数据库id号自动生成器,SQL Server数据库sql语句生成器(SqlDataToScript)的使用(sql server自增列(id)插入固定值)...

    SqlDataToScript是根据表数据进行生成 Insert Into语句,此工具还有一个好处是可以对自增列插入固定值,例如:自增的列id值为5,但是5这个行值已经删除,如果想存储Id自增列值为5 ...

  8. oracle自增列问题i,Oracle序列 和 SQL SERVER 自增列的问题-oracle

    现对一表进行如下操作,主键为ID 1.定义并启动一个事务 2.使用com智能指针打开表 _RecordsetPtr pRecPtr = m_pAdoDb->OpenTable(strSQL,ad ...

  9. Qt清空表数据并重置自增列(sqlite+mysql)

    void DBHelper::clearData(const QString &tableName) {QString sql;QSqlQuery query;if (App::LocalDB ...

最新文章

  1. 中南林业科技大学的计算机研究生分数线,2019中南林业科技大学研究生分数线汇总(含2016-2019历年复试)...
  2. python编辑用户登录界面_python编辑用户登入界面的实现代码
  3. mysql8報錯解決方案彙總(持續更新中)
  4. AT2165-[AGC006D]MedianPyramidHard【二分,贪心】
  5. java api class_Java API:Object class
  6. Git 的BUG小结
  7. 20155238 2016-2017-2 《Java程序设计》第六周学习总结
  8. 定位日站大法之-社会工程学
  9. qq2008珊瑚虫版SL
  10. 老男孩linux高端运维课程—linux系统目录结构知识讲解
  11. IDEA好看的主题(自用)
  12. aac和mp3在码率压缩的一些事
  13. 机器学习面试笔试求职必背!八股文(1/5)
  14. 如何让别人看不懂java代码_为什么你写的代码别人看不懂?
  15. java设置cpu亲和性_cpu亲和性绑定
  16. 北京网络文化经营许可证资质办理有什么要求
  17. 界面(1):对话框和菜单 打印和按钮等杂项
  18. 简单python数据分析项目实例-入门Python数据分析最好的实战项目(一)
  19. Debian 查看与修改IP,设置多ip,network与networkManager配置
  20. 英雄连2显示无法连接服务器,英雄连2steam无法连接到更新服务器 | 手游网游页游攻略大全...

热门文章

  1. linux系统日志_第十二章:走进Linux世界——系统日志管理,日志轮转。
  2. UVA-11995(STL+模拟)附讲解
  3. JVM监控及诊断工具-命令行篇一
  4. 无线轮播android,Android无限轮播Banner的实现
  5. java实现二分法递归_Java递归实现二分法
  6. mysql select time,MySql查询时间段的方法
  7. A、B、C、D、E类IP地址都是怎么划分的?
  8. 为了让你在“口袋奇兵”聊遍全球,Serverless 做了什么?
  9. 从零开始入门 K8s | K8s 安全之访问控制
  10. 从零开始入门 K8s | 应用存储和持久化数据卷:核心知识