我需要从一些'user_id' ='some value'的所有表中删除所有记录。我怎样才能在 MS SQL 2005 中做到这一点?PS Cascades 并非无处不在。
问问题
996 次
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 回答