一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法技术

技术编号:38146016 阅读:12 留言:0更新日期:2023-07-08 10:03
本发明专利技术公开了一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,步骤S1,根据多唯一键表的结构信息找出表中所有的主键、唯一键,并存放在一个集合set1中;步骤S2,根据所述集合set1和更新操作的内容,收集更新操作中所有被修改的唯一键,存入集合set2;步骤S3,遍历集合set2中的所有唯一键,依次组合查询语句,并使用唯一键更新之后的数据作为查询条件,查询目标库中的数据;步骤S4,若查询出记录,则表示该记录为冲突记录;若没有查询出数据,则执行步骤S3;步骤S5,根据查找出的目标端冲突记录用作后续容错处理,可实现在有多个唯一键的表更新键值,目标库存在记录冲突时查找冲突记录。找冲突记录。找冲突记录。

【技术实现步骤摘要】
一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法


[0001]本专利技术涉及数据库同步领域,特别是涉及一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法。

技术介绍

[0002]数据库是使用非常广泛的计算机软件,在生产环境中经常会部署数据库实时同步软件,将源库实时同步到目标库,来满足容灾、读写分离等需求。
[0003]数据库同步软件在同步数据库的插入、删除和更新等操作时,可能会因为各种原因在目标库产生数据装载冲突。本专利技术只考虑源库修改多唯一键表中的多个键值,同步到目标库导致

违反唯一约束条件

的情况。
[0004]现举例说明:create table tab1 (f1 number unique,f2 number unique,f3 number primary key, age number, name varchar2(10));表1 源库tab1表中数据列名f1numberf2numberf3numberagenumberNamevarchar2(10)记录121110a记录245313b表2 目标库tab1表中数据列名f1numberf2numberf3numberagenumberNamevarchar2(10)记录121110a记录242313b如上示例所示,现源端2条记录,源f1列的值为2,4,源f2列的值为1,5,源f3列的值为1,3。应用程序要修改第一条记录f1的值2为3,f2的值1为2,这样修改在源端由于不存在相同键值不会出现问题,但是在目标库,在执行源端发来的更新操作会出现“违反唯一性约束”的情况。因为在目标库执行更新操作时已经存在一个相同的键值f2 = 2,同步软件在执行更新操作(URP)语句时会出现与记录中相同的唯一键值,此更新操作将无法正确执行,需要查找冲突记录以便后续处理。

技术实现思路

[0005]为克服上述现有技术存在的不足,本专利技术之目的在于提供一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,能够确定存在多个唯一键的表更新键值,目标库存在记录冲突时,查找到冲突记录,以便后续容错处理。
[0006]为达上述目的,本专利技术提出一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,包括如下步骤:步骤S1,根据多唯一键表的结构信息找出表中所有的主键、唯一键,并存放在一个
集合set1中;步骤S2,根据所述集合set1和更新操作的内容,收集更新操作中所有被修改的唯一键,存入集合set2;步骤S3,遍历集合set2中的所有唯一键,依次组合查询语句,并使用唯一键更新之后的数据作为查询条件,查询目标库中的数据;步骤S4,若查询出记录,则表示该记录为冲突记录;若没有查询出数据,则执行步骤S3;步骤S5,根据查找出的目标端冲突记录用作后续容错处理。
[0007]作为本专利技术的进一步优化,所述更新键值查找冲突记录方法为目标端违反唯一性约束冲突时,目标端进行的处理过程。
[0008]作为本专利技术的进一步优化,于步骤S1中,源库tab1表有两条记录,源f1列的值为2、4 ,源f2列的值为1、5 ,源f3列的值为1、3,目标库tab1有两条记录,f1列的值为2、4,f2列的值为1、2,f3列的值为1、3,f1、f2为唯一键,f3为主键,应用程序要修改第一条记录f1的值2为3,f2的值1为2,查找冲突记录的方法进一步具体为:根据tab1表的结构信息中查找出所有主键、唯一键,将{f1}、{f2}、{f3}存入集合set1中。
[0009]作为本专利技术的进一步优化,步骤S2进一步具体为:根据集合set1和更新操作的内容,将收集更新操作中所有被修改的唯一键{f1}、{f2}存入集合set2中。
[0010]作为本专利技术的进一步优化,步骤S3进一步具体为:匹配f1键,用{f1}和此列更新之后的数据
‘3’
组合语句查询是否有记录“Select f1,f2,f3,age,name from tab1 where f1= 3”。
[0011]作为本专利技术的进一步优化,步骤S4进一步具体为:没有查询出记录,继续遍历,用{f2}和此列更新之后的数据
‘2’
组合语句查询是否有记录“Select f1,f2,f3,age,name from tab1 where f2 = 2”,查询出记录,则该条记录为冲突记录。
[0012]与现有技术相比,本专利技术公开的一个方面的有益效果在于:在源库修改多唯一键表中的多个键值,同步到目标库导致“违反唯一约束条件”的情况下,可以有效查找冲突记录,以便后续容错处理。
附图说明
[0013]图1为本专利技术一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法的步骤流程图;
实施方式
[0014]以下通过特定的具体实例并结合附图说明本专利技术的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本专利技术的其它优点与功效。本专利技术亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本专利技术的精神下进行各种修饰与变更。
[0015]图1为本专利技术一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法的步骤流程图。如图1所示,本专利技术一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,包括如下步骤:
步骤S1,根据多唯一键表的结构信息找出表中所有的主键、唯一键,并存放在一个集合set1中;步骤S2,根据所述集合set1和更新操作的内容,收集更新操作中所有被修改的唯一键,存入集合set2;步骤S3,遍历集合set2中的所有唯一键,依次组合查询语句,并使用唯一键更新之后的数据作为查询条件,查询目标库中的数据;步骤S4,若查询出记录,则表示该记录为冲突记录;若没有查询出数据,则执行步骤S3;步骤S5,根据查找出的目标端冲突记录用作后续容错处理。
[0016]本实施例中,是在目标端违法唯一性约束冲突的时候,目标端所做的处理过程。
[0017]在本实施例中,参照表1源库tab1表中数据和表2目标库tab1表中数据,并在应用程序要修改第一条记录f1的值2为3,f2的值1为2的基础上,查找冲突记录,进一步包括:(1)根据tab1表的结构信息中查找出所有主键、唯一键,将{f1}、{f2}、{f3}存入集合set1中;(2)根据集合set1和更新操作的内容,将收集更新操作中所有被修改的唯一键{f1}、{f2}存入集合set2中;(3)匹配f1键,用{f1}和此列更新之后的数据
‘3’
组合语句查询是否有记录“Select f1,f2,f3,age,name from tab1 where f1= 3”;(4)没有查询出记录,继续遍历,用{f2}和此列更新之后的数据
‘2’
组合语句查询是否有记录“Select f1,f2,f3,age,name from tab1 where f2 = 2”,查询出记录,则该条记录为冲突记录;(5)应用软件查找出本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,包括如下步骤:步骤S1,根据多唯一键表的结构信息找出表中所有的主键、唯一键,并存放在一个集合set1中;步骤S2,根据所述集合set1和更新操作的内容,收集更新操作中所有被修改的唯一键,存入集合set2;步骤S3,遍历集合set2中的所有唯一键,依次组合查询语句,并使用唯一键更新之后的数据作为查询条件,查询目标库中的数据;步骤S4,若查询出记录,则表示该记录为冲突记录;若没有查询出记录,则执行步骤S3;步骤S5,根据查找出的目标端冲突记录用作后续容错处理。2.如权利要求1所述的一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,其特征在于,所述更新键值查找冲突记录方法为目标端违反唯一性约束冲突的基础上,目标端进行的处理过程。3.如权利要求2所述的一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,其特征在于,于步骤S1中,源库tab1表有两条记录,源f1列的值为2、4 ,源f2列的值为1、5 ,源f3列的值为1、3,目标库tab1有两条记录,f1列...

【专利技术属性】
技术研发人员:李一铭高志会陈勇铨江俊
申请(专利权)人:上海英方软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1