我目前正在从事一个项目,其中我有2个Server数据库,需要将新记录复制到归档数据库中,并附加更新日期。示例:
现有DB: dbo.A.Category(Id, Name)
将新记录(无副本)复制到:
存档数据库: dbo.B.Category(Id, Name, ArchiveDate)
如何仅将已更改的记录从现有数据库复制到归档数据库?这在Server中。
发布于 2020-07-01 18:59:18
为此,可以使用for运算符。例如:
INSERT INTO archiveCategory (id,name,creationdate)
SELECT id,name,current_timestamp
FROM (
SELECT id,name
FROM myDB.dbo.category
EXCEPT
SELECT id,name
FROM archiveDB.dbo.category
WHERE creationdate = (SELECT max(creationdate) from archiveDB.dbo.category a2 where a.id = a2.id )
) delta发布于 2020-07-02 11:40:02
您可以通过一个MERGE语句来实现这一点。
我对你想要达到的目标做了以下假设:
dbo.B.Category
[Id]列包含唯一的值
dbo.B.Category中的[Id]列不是标识列,而值对应于匹配的dbo.A.Category中的[name]值,而不是如果它们被更新为相同的值(例如,如果'Bob‘被更改为’Bob‘)H 215H 116您不希望同样地从dbo.B.Category
中删除D17中的行
MERGE dbo.B.Category AS tgt
USING dbo.A.Category AS src
ON tgt.[Id] = src.[Id]
WHEN MATCHED
AND tgt.[Name] <> src.[Name]
THEN UPDATE
SET [Name] = src.[Name]
, [ArchiveDate] = SYSDATETIME()
WHEN NOT MATCHED BY TARGET
THEN INSERT ( [Id], [Name], [ArchiveDate] )
VALUES ( src.[id], src.[name], SYSDATETIME() ) ;
GOhttps://stackoverflow.com/questions/62683286
复制相似问题