【问题标题】:Truncate selected tables in SQL Server截断 SQL Server 中的选定表
【发布时间】:2015-06-29 09:46:02
【问题描述】:

如何在 SQL Server 2008 中截断选择性表, 我有一个在截断过程中可能被排除的表列表。

有人可以指导我吗?

【问题讨论】:

    标签: sql-server truncate


    【解决方案1】:

    您可以简单地运行TRUNCATE TABLE yourTableName。如果你有一个列表,你可以运行以下命令:

    CREATE TABLE #truncateTables(name nvarchar(255))
    
    INSERT INTO #truncateTables(name) VALUES(N'dbo.yourTable1'),(N'dbo.yourTable2')
    
    DECLARE cur CURSOR FOR
    SELECT name FROM #truncateTables
    
    OPEN cur
    
    DECLARE @sql nvarchar(max), @tabname nvarchar(255)
    
    FETCH NEXT FROM cur INTO @tabname
    
    WHILE @@FETCH_STATUS = 0 BEGIN
        SET @sql = N'TRUNCATE TABLE '+@tabname
            BEGIN TRY EXEC(@sql)
        END TRY
        BEGIN CATCH -- if a foreign key constraint exists
            SET @sql = N'DELETE FROM '+@tabname
            EXEC(@sql)
        END CATCH
    
        FETCH NEXT FROM cur INTO @tabname
    
    END
    
    CLOSE cur
    DEALLOCATE cur
    
    DROP TABLE #truncateTables
    

    【讨论】:

    • 进入按钮有点快。 ;-) 代码已粘贴。
    • 只有当你有外键约束时截断才会失败。如果是这种情况,您可以尝试删除它。我应该在答案中添加 try-catch 还是您知道如何自己执行此操作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    相关资源
    最近更新 更多