我有一个数据仓库和一个暂存数据库。staging 每天在 ftp 上获取一个新文件,该文件被加载到 staging DB 上。然后在数据库仓库中插入/更新/删除。但是,暂存文件只有最近 5 天的记录,这些记录是滚动的。也就是说,今天是从 8 月 8 日到 8 月 13 日,但明天该文件将包含从 8/9 到 8/14 的数据,而 DB 仓库具有所有历史记录。
当我使用
WHEN NOT MATCHED BY SOURCE THEN DELETE
它将从 DBwarehouse 中删除与暂存不匹配的所有记录。这将抹去所有的历史。我想控制脚本只返回 5 天并检查它是否与源不匹配。这是查询:
MERGE INTO
[x].[y].[z] AS Target
USING [a].[y].[z]AS Source
ON target.[PROBLEM_ID] =source.[PROBLEM_ID]
WHEN MATCHED THEN
UPDATE SET
Target.[CUSTNO] = Source.[CUSTNO],
Target.[SALESID] = Source.[SALESID],
Target.[PCODE] = Source.[PCODE]
WHEN NOT MATCHED BY TARGET THEN
INSERT
([CUSTNO]
,[SALESID]
,[PCODE])
VALUES
(source.[CUSTNO]
,source.[SALESID]
,source.[PCODE])
WHEN NOT MATCHED BY SOURCE
THEN DELETE;
;
我可以限制删除语句只返回数据库仓库 5 天吗?如果是,请帮助我提供约束代码。