MSSQL 删除数据库表数据


--删除数据库表数据  慎用
create PROCEDURE sp_DeleteAllData
AS  
  declare @tblName nvarchar(50)
  declare @sNOCHECKCONSTRAINT nvarchar(500)
  declare @sDISABLETRIGGER nvarchar(500)
  declare @sDeleteTable nvarchar(500)
  declare @sCHECKCONSTRAINT nvarchar(500)
  declare @sENABLETRIGGER nvarchar(500)
  
  begin try  
    begin tran 
      -- 失效索引,触发器
      declare tb cursor for select name from sys.sysobjects where xtype='U' and category=0
      open tb 
      fetch next from tb into @tblName 
      while @@fetch_status=0
      begin
        set @sNOCHECKCONSTRAINT ='ALTER TABLE ' + @tblName+ ' nocheck CONSTRAINT ALL'
        set @sDISABLETRIGGER    ='ALTER TABLE ' + @tblName+ ' DISABLE TRIGGER ALL'
        EXEC sp_MSForEachTable @sNOCHECKCONSTRAINT
        EXEC sp_MSForEachTable @sDISABLETRIGGER
        fetch next from tb into @tblName
      end
      close tb
      deallocate tb      
      -- 删除数据
      declare tb1 cursor for select name from sys.sysobjects where xtype='U' and category=0
      open tb1 
      fetch next from tb1 into @tblName 
      while @@fetch_status=0
      begin
        set @sDeleteTable       ='delete from ' + @tblName
        EXEC sp_MSForEachTable @sDeleteTable
        print '删除数据表'+@tblName +'完成'
        fetch next from tb1 into @tblName
      end
      close tb1
      deallocate tb1
      --恢复索引,触发器
      declare tb2 cursor for select name from sys.sysobjects where xtype='U' and category=0
      open tb2 
      fetch next from tb2 into @tblName 
      while @@fetch_status=0
      begin
        set @sCHECKCONSTRAINT   ='ALTER TABLE ' + @tblName+ ' check CONSTRAINT ALL'
        set @sENABLETRIGGER     ='ALTER TABLE ' + @tblName+ ' ENABLE TRIGGER ALL'
        EXEC sp_MSForEachTable @sCHECKCONSTRAINT
        EXEC sp_MSForEachTable @sENABLETRIGGER
        fetch next from tb2 into @tblName
      end
      close tb2
      deallocate tb2
    commit tran
  end try
  begin catch
    rollback
  end catch
GO 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM