首页 > 技术文章 > 遍历所有表,取每个表的MAXID更新到ID控制表

luoxueningchen 2016-01-08 16:52 原文

Declare @Name nvarchar(50)
Declare @TID int

DECLARE Temp_Cursor1 Cursor--定义游标
FOR SELECT Name FROM Sys_Entity 
OPEN Temp_Cursor1
FETCH Temp_Cursor1 INTO @Name
WHILE @@fetch_status=0
BEGIN
SET @TID=0
select @TID=id from [sysobjects] where [type] = 'u' and [name]=@Name
print (@TID)
if @TID>0
BEGIN
exec('update Sys_Entity set MaxID=(select MAX(ID) from '+@Name+' ) where Name='''+@Name+'''')
END 
FETCH Temp_Cursor1 INTO @Name
END
CLOSE Temp_Cursor1
DEALLOCATE Temp_Cursor1

更新最大ID时,忘记写where条件,导致把ID控制表Sys_Entity的所有ID都更新为相同的了。。

无奈之下,只能写个方法把所有表的最大ID重新取出来存到Sys_Entity

推荐阅读