如何从id等于某个值的所有表中删除所有行

时间:2013-02-07 13:08:01

标签: sql-server sql-server-2005

我需要从所有表中删除所有记录,其中'user_id'='some value'。我怎样才能在MS SQL 2005中做到这一点? P.S Cascades并不是无处不在。

1 个答案:

答案 0 :(得分:2)

如果这是一次性任务,那么快速而肮脏的方式。删除user_id=999

运行

SELECT 
        'DELETE FROM ' + quotename(OBJECT_SCHEMA_NAME(object_id)) + '.' 
             + quotename(OBJECT_NAME(object_id)) + ' WHERE user_id=999'
FROM sys.columns 
WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1  AND name = 'user_id'

将结果复制并粘贴到SSMS中。反复执行,直到它没有给出FK错误。

如果您需要多次关闭任务,则需要参数化DELETE语句并按正确的顺序排序以避免FK错误。