使用存储过程从 SQL DB 中的两个链接表中删除数据

问题描述 投票:0回答:1

我需要编写一个存储过程来删除在 SQL DB 服务器中使用主键链接在一起的两个表中早于特定日期(> 6 个月)的数据行(更新行)。

有人可以帮忙吗?谢谢!

与主键链接

sql database datatables
1个回答
0
投票

您有两个链接表:Table1 和 Table2,并且有一个公共主键,我们将其称为 PrimaryKeyColumn。您还想删除“UpdatedDate”列早于 6 个月的行。以下是如何创建存储过程的示例:

CREATE PROCEDURE DeleteOldDataFromLinkedTables
AS
BEGIN
    -- Calculate the date 6 months ago
    DECLARE @CutoffDate DATETIME
    SET @CutoffDate = DATEADD(MONTH, -6, GETDATE())

    -- Delete data from the first table (Table1)
    DELETE T1
    FROM LinkedServer.DatabaseName.dbo.Table1 AS T1
    JOIN LinkedServer.DatabaseName.dbo.Table2 AS T2 ON T1.PrimaryKeyColumn = T2.PrimaryKeyColumn
    WHERE T1.UpdatedDate < @CutoffDate;

    -- Delete data from the second table (Table2)
    DELETE FROM LinkedServer.DatabaseName.dbo.Table2
    WHERE UpdatedDate < @CutoffDate;
END
  1. 我们将 @CutoffDate 计算为当前日期减去 6 个月。

  2. 我们使用带有 JOIN 的 DELETE 语句从 Table1 中删除行 在表 2 中具有匹配的主键值,并且其中 “UpdatedDate”早于@CutoffDate。

  3. 我们还仅根据“UpdatedDate”从 Table2 中删除行。 您可以根据您的情况选择从一个或两个表中删除 要求。

  4. 确保替换 LinkedServer、DatabaseName、Table1、Table2、 PrimaryKeyColumn 和 UpdatedDate 在您的 设置。

    EXEC DeleteOldDataFromLinkedTables;
    
© www.soinside.com 2019 - 2024. All rights reserved.