我需要从所有表中删除所有记录,其中'user_id'='some value'。我怎样才能在MS SQL 2005中做到这一点? P.S Cascades并不是无处不在。
答案 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错误。