掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
本文我們主要介紹了SQL Server數(shù)據(jù)同步Merge的一個小漏洞以及解決的方案,通過以下的代碼讓我們來一起了解一下這一漏洞是怎么造成的以及它的解決方法吧。

成都創(chuàng)新互聯(lián)長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為富縣企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計,富縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
假設(shè)有兩個數(shù)據(jù)a.Name NVarchar(40)和b.Name Varchar(40),代碼如下:
- MERGE a AS TARGET
- USING (
- SELECT
- id,name
- FROM b
- ) AS SOURCE ON (TARGET.[id] = SOURCE.[id])
- WHEN MATCHED AND CHECKSUM(TARGET.Name)!= CHECKSUM(CONVERT(NVARCHAR(40),SOURCE.[Name])) THEN
- UPDATE SET TARGET.[Name] = SOURCE.[Name],
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (
- [id]
- ,[Name]
- ) VALUES(
- SOURCE.[ID]
- ,SOURCE.[Name]
- )
- WHEN NOT MATCHED BY SOURCE THEN
- Delete ....
當b.name 以“-” 結(jié)束,如 “test-” 這種情況,merge不起作用。其他情況都還好。
需要把
- CHECKSUM(TARGET.Name)!= CHECKSUM(CONVERT(NVARCHAR(40),SOURCE.[Name]))
變成
- CHECKSUM(CONVERT(NVARCHAR(40),TARGET.Name))!= CHECKSUM(SOURCE.[Name])
后才可以同步。
關(guān)于SQL Server數(shù)據(jù)同步Merge的知識就介紹到這里,希望能夠帶給您一些收獲吧!
【編輯推薦】

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流