在所有表上生成DELETE脚本

时间:2016-09-26 01:22:54

标签: sql sql-server sql-server-2014

我们有一个中等大小的数据库,结构明智,我们需要进行软删除,硬删除。部分过程是在删除已删除列之前,实际删除已被软删除的行。我已经生成了一个删除列表,但我可能会遇到外键异常。

所以,我按'object_id'命令,希望表中的表被添加,并且object_id增加了。部署后未添加任何表。

那么,这适合吗?

SELECT 'DELETE FROM [' + ss.name + '].[' + st.name + '] WHERE DELETED IS NOT NULL'
FROM sys.tables st
INNER JOIN sys.schemas ss
ON ss.schema_id = st.schema_id
WHERE type='U'
AND st.name NOT IN ('JobRunLog', 'Log')
AND st.Object_ID IN(
    SELECT DISTINCT(st.object_id) 
    FROM sys.tables st
    INNER JOIN sys.columns cc 
        ON st.object_id = cc.object_id 
    AND cc.name = 'DELETED'
)
ORDER BY st.object_id DESC

我要在object_id上倒退,因为我想先删除最后添加的表。只有在FK存在的情况下才能创建它们。

0 个答案:

没有答案