我的数据库中有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。
答案 0 :(得分:3)
在IF ''?'' NOT IN (''TABLE1'',''TABLE2'')
之前使用DELETE FROM [?]
顺便说一句,我建议使用TRUNCATE TABLE [?]
代替DELETE FROM [?]