📄 4.primarykeys-update_v001.sql
字号:
-- create tmp table #qx_maxkeyscreate table #qx_maxkeys( tablename varchar(255) unique, keyvalue int )go-- select all tables DECLARE @id intDECLARE @tbl varchar(255)DECLARE @col varchar(255)DECLARE @stm nvarchar(4000)DECLARE cur CURSOR FORselect so.id, so.name, sc.name from sysobjects so, syscolumns sc where so.xtype = 'U' and sc.id = so.id and sc.typestat = 1 and sc.type = 56 and sc.colid = 1order by so.nameOPEN cur-- fill table #qx_maxkeysFETCH NEXT FROM cur INTO @id, @tbl, @colWHILE (@@FETCH_STATUS = 0)BEGIN SELECT @stm ='INSERT INTO #qx_maxkeys SELECT lower(''' + @tbl + ''') AS tablename, MAX(' + @col + ') as keyvalue FROM dbo.' + @tbl --PRINT 'Select table: ' + @tbl --PRINT 'Sql: ' + @stm EXEC( @stm ) if @@error <> 0 begin raiserror ('Error inserting objects from %s into #qx_maxkeys, search procedure aborted', 16, 1, @tbl) end FETCH NEXT FROM cur INTO @id, @tbl, @colENDCLOSE curDEALLOCATE curgoDECLARE @tbl varchar(255)DECLARE @maxkey intDECLARE @curkey intDECLARE @increment intDECLARE cur2 CURSOR FORselect tablename, keyvaluefrom #qx_maxkeys OPEN cur2-- select from #qx_maxkeysFETCH NEXT FROM cur2 INTO @tbl, @maxkeyWHILE (@@FETCH_STATUS = 0)BEGIN select @curkey = ISNULL((select keyvalue from dbo.qx_keys where lower(tablename) = lower(@tbl)), 0) PRINT 'Check table: ' + @tbl + ', key: ' + cast( @maxkey as varchar(255) ) + ', cur key: ' + cast( @curkey as varchar(255) ) SELECT @increment = (@maxkey - @curkey) IF @increment > 0 BEGIN PRINT 'Set up max key to ' + cast( @increment as varchar(255) ) EXEC dbo.QX_NEXT_KEY @tbl, @increment, @curkey END FETCH NEXT FROM cur2 INTO @tbl, @maxkeyENDCLOSE cur2DEALLOCATE cur2go-- drop tmp tabledrop table #qx_maxkeysgo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -