MS SQL Server 2014 | “递归”通过星型模式删除

时间:2016-11-15 10:43:32

标签: sql sql-server

美好的一天,

我会尝试尽可能简洁。

我有一个星型模式,中间有一个事实表,由一组维度表包围。每个维度表都会进入更多维度表。

伪视觉示例:

Super_FAC >--FK-- First_DIM --NK-- Snowflake_DIM

>-表示一对一关系,--表示一对一关系,FK表示外键,NK表示自然键)

我想要实现的目标:我试图通过递归删除事实表中的记录,向上链到第一个维度表然后进入雪花维度表,具有最少量的脚本。 (不允许触发)

我做了什么:

DELETE Super_FAC
    FROM Snowflake_DIM AS SDIM INNER JOIN
    First_DIM AS FDIM ON SDIM.NK = FDIM.NK INNER JOIN -- For brevity, key is more complex
    Super_FAC AS SFAC ON FDIM.FK = SFAC.FK
    WHERE SDIM.ModifiedDate >= DeltaDate

DELETE First_DIM
    FROM Snowflake_DIM AS SDIM INNER JOIN
    First_DIM AS FDIM ON SDIM.NK = FDIM.NK -- For brevity, key is more complex
    WHERE SDIM.ModifiedDate >= DeltaDate

DELETE Snowflake_DIM
    FROM Snowflake_DIM AS SDIM INNER JOIN
    WHERE SDIM.ModifiedDate >= DeltaDate

是否有更多优雅的解决方案?使用像CTE这样的东西?

提前致谢。

中号

0 个答案:

没有答案