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

  • 相关阅读:
    Node post请求 通常配合ajax
    Node json
    Node params和query的Get请求传参
    Node express
    java NIO FileChannel
    IO 输出 PrintStream和PrintWriter
    ByteBuffer
    分析dump
    oracle free space
    SHELL 在指定行的前/后插入指定内容
  • 原文地址:https://www.cnblogs.com/xishi/p/5479071.html
Copyright © 2011-2022 走看看