我需要编写一个存储过程来删除在 SQL DB 服务器中使用主键链接在一起的两个表中早于特定日期(> 6 个月)的数据行(更新行)。
有人可以帮忙吗?谢谢!
与主键链接
您有两个链接表: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
我们将 @CutoffDate 计算为当前日期减去 6 个月。
我们使用带有 JOIN 的 DELETE 语句从 Table1 中删除行 在表 2 中具有匹配的主键值,并且其中 “UpdatedDate”早于@CutoffDate。
我们还仅根据“UpdatedDate”从 Table2 中删除行。 您可以根据您的情况选择从一个或两个表中删除 要求。
确保替换 LinkedServer、DatabaseName、Table1、Table2、 PrimaryKeyColumn 和 UpdatedDate 在您的 设置。
EXEC DeleteOldDataFromLinkedTables;