zoukankan      html  css  js  c++  java
  • SQL 重置自增列的值 批量处理

    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

  • 相关阅读:
    Head first javascript(七)
    Python Fundamental for Django
    Head first javascript(六)
    Head first javascript(五)
    Head first javascript(四)
    Head first javascript(三)
    Head first javascript(二)
    Head first javascript(一)
    Sicily 1090. Highways 解题报告
    Python GUI programming(tkinter)
  • 原文地址:https://www.cnblogs.com/xishi/p/5479071.html
Copyright © 2011-2022 走看看