0

我需要从一些'user_id' ='some value'的所有表中删除所有记录。我怎样才能在 MS SQL 2005 中做到这一点?PS Cascades 并非无处不在。

4

1 回答 1

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 错误。

于 2013-02-07T13:14:26.463 回答