如何删除数据库中除少数几个表之外的所有表中的数据

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。


这可能会帮助您 https://dev59.com/hmsz5IYBdhLWcg3wg4Cv - TriV
成功了。谢谢! - Maltesh
1个回答

3
在执行 DELETE FROM [?] 之前,先使用 IF ''?'' NOT IN (''TABLE1'',''TABLE2'')。另外,我建议使用 TRUNCATE TABLE [?] 替代 DELETE FROM [?]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接