3

我的数据库中有 50 多个表,我想删除 48 个表中的所有数据。

我尝试使用

EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'

EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'

EXEC sp_MSForEachTable 'DELETE FROM ?  '

EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'

EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'

EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'

GO

但它会删除所有表中的所有数据。

有人可以建议我需要进行哪些更改才能从查询中除 TABLE1、TABLE2 等之外的所有表中删除数据:

EXEC sp_MSForEachTable 'DELETE FROM ?  '

我正在使用 SQL Server 2008R2。

4

1 回答 1

3

IF ''?'' NOT IN (''TABLE1'',''TABLE2'')在你之前使用DELETE FROM [?]
顺便说一句,我建议使用TRUNCATE TABLE [?]而不是DELETE FROM [?]

于 2017-04-20T10:05:23.610 回答