sqlserver CheckSum

本文介绍了一种通过创建带有CheckSum的索引来实现源表和目标表之间的数据同步及校验的方法。通过对比主键相同的记录的CheckSum值来确定是否需要进行更新操作,并给出了具体的SQL脚本实例。

--代表来源端数据表
CREATE TABLE tblOrg(c1 int primary key,c2 int,c3 nvarchar(10),c4 nvarchar(10),HashKey As CheckSum(c2,c3))
CREATE INDEX idxOrgHash ON tblOrg(HashKey)
--代表目的端数据表
CREATE TABLE tblTar(c1 int primary key,c2 int,c3 nvarchar(10),HashKey As CheckSum(c2,c3))
CREATE INDEX idxTarHash ON tblTar(HashKey)

INSERT tblOrg(c1,c2,c3,c4) VALUES(1,1,'甲','甲')
INSERT tblOrg(c1,c2,c3,c4) VALUES(2,2,'乙','乙')
INSERT tblOrg(c1,c2,c3,c4) VALUES(3,3,NULL,NULL)

INSERT tblTar(c1,c2,c3) SELECT c1,c2,c3 FROM tblOrg

UPDATE tblOrg SET c3='甲甲' WHERE c1=1
UPDATE tblOrg SET c4='乙乙' WHERE c1=2
UPDATE tblOrg SET c3='丙' WHERE c1=3

--比较主键相同,而 CheckSum 不同的纪录,需要更新
UPDATE tblTar SET c2=o.c2, c3=o.c3
FROM tblTar t JOIN tblOrg o ON t.c1=o.c1
AND o.HashKey <> t.HashKey

--比较结果
SELECT * FROM tblOrg
SELECT * FROM tblTar

CheckSum 和ROWVERSION 列不同的时,可以指定列。

转载于:https://www.cnblogs.com/yg_zhang/archive/2009/08/01/1536304.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值