【发布时间】:2015-06-29 09:46:02
【问题描述】:
如何在 SQL Server 2008 中截断选择性表, 我有一个在截断过程中可能被排除的表列表。
有人可以指导我吗?
【问题讨论】:
标签: sql-server truncate
如何在 SQL Server 2008 中截断选择性表, 我有一个在截断过程中可能被排除的表列表。
有人可以指导我吗?
【问题讨论】:
标签: sql-server truncate
您可以简单地运行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
【讨论】: