Raj*_*ore 2 sql t-sql sql-server sql-server-2008
我有一个包含数百个表的数据库.
我正在构建一个脚本来删除此数据库中的所有行.
当然,作为一个关系数据库,我必须先删除孩子们的行才能触摸父母.
有什么东西我可以用于此或我必须这么做吗?
编辑
已接受的答案已修改为包括禁用触发器
EXEC sp_MSForEachTable 'DISABLE TRIGGER ALL ON ? '
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'DELETE FROM ?'
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'ENABLE TRIGGER ALL ON ? '
Run Code Online (Sandbox Code Playgroud)
您可以禁用所有约束,然后删除所有数据,并再次启用约束.您可以将代码放在存储过程中以进行重用.快速又脏的东西:
CREATE PROCEDURE sp_EmplyAllTable
AS
EXEC sp_MSForEachTable ‘ALTER TABLE ? NOCHECK CONSTRAINT ALL’
EXEC sp_MSForEachTable ‘DELETE FROM ?’
EXEC sp_MSForEachTable ‘ALTER TABLE ? CHECK CONSTRAINT ALL’
GO
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
299 次 |
最近记录: |