Asy*_*ous 7 sql t-sql sql-server sql-server-2008
我不知道从哪里开始或者这将如何工作,我希望有人有一个想法或一个经过验证的方法.
为了展示我想要做的事情的一个例子,我创建了一个存储过程,它通过从链接表中获取记录来更新或插入Local表中的新记录.存储过程在SQL Server中作为作业运行,以更新和插入新记录.
我的问题是:有没有办法查询本地表中的数据,以便最初我可以获取所有记录,但只获取已插入的新记录或更新的旧记录?
我不想连续获取所有记录,只添加新记录或更新记录.
这可能吗?
以下是我创建的存储过程,作为更新本地电话数据的示例:
CREATE PROCEDURE sp_UPDATE_PHONE_RECORDS
AS
BEGIN
MERGE dbo.PHONE_REC AS Target
USING (SELECT MEMBER_ID
,HOME_PHONE = dbo.udf_StdPhoneFmt(HOME)
,CELL_PHONE = dbo.udf_StdPhoneFmt(CELL)
,WORK_PHONE = dbo.udf_StdPhoneFmt(WORK)
FROM PHONE WHERE MEMBER_ID IS NOT NULL) AS SOURCE
ON (Target.MEMBER_ID = SOURCE.MEMBER_ID)
WHEN MATCHED THEN
UPDATE SET Target.HOME_PHONE = Source.HOME_PHONE,Target.CELL_PHONE = Source.CELL_PHONE,
Target.WORK_PHONE = Source.WORK_PHONE
WHEN NOT MATCHED BY TARGET THEN
INSERT (MEMBER_ID, HOME_PHONE, CELL_PHONE ,WORK_PHONE)
VALUES (Source.MEMBER_ID, Source.HOME_PHONE, Source.CELL_PHONE, Source.WORK_PHONE);
END
GO
Run Code Online (Sandbox Code Playgroud)
这可能吗?
感谢大家!
我们通常做的是在源表中添加两个日期/时间字段,例如Source.LastModifiedOn和Source.CreatedOn.
然后,当作业运行以更新目标表时,您可以说自上次作业运行以来获取所有Source.LastModifiedOn和Source.CreatedOn行,并根据行执行更新/插入.
当然,您需要确保正确设置Source.LastModifiedOn和Source.CreatedOn.
| 归档时间: |
|
| 查看次数: |
10262 次 |
| 最近记录: |