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

文档序号:34727611发布日期:2023-07-07 21:42阅读:22来源:国知局
本发明涉及数据库同步领域,特别是涉及一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法。
背景技术
::1、数据库是使用非常广泛的计算机软件,在生产环境中经常会部署数据库实时同步软件,将源库实时同步到目标库,来满足容灾、读写分离等需求。2、数据库同步软件在同步数据库的插入、删除和更新等操作时,可能会因为各种原因在目标库产生数据装载冲突。本发明只考虑源库修改多唯一键表中的多个键值,同步到目标库导致‘违反唯一约束条件’的情况。3、现举例说明:4、create table tab1 (f1 number unique,f2 number unique,f3 numberprimary key, age number, name varchar2(10));5、表1 源库tab1表中数据6、 列名 f1 number f2number f3number age number namevarchar2(10) 记录1 2 1 1 10 a 记录2 4 5 3 13 b 7、表2 目标库tab1表中数据8、 列名 f1 number f2number f3number age number namevarchar2(10) 记录1 2 1 1 10 a 记录2 4 2 3 13 b 9、如上示例所示,现源端2条记录,源f1列的值为2,4,源f2列的值为1,5,源f3列的值为1,3。应用程序要修改第一条记录f1的值2为3,f2的值1为2,这样修改在源端由于不存在相同键值不会出现问题,但是在目标库,在执行源端发来的更新操作会出现“违反唯一性约束”的情况。因为在目标库执行更新操作时已经存在一个相同的键值f2 = 2,同步软件在执行更新操作(urp)语句时会出现与记录中相同的唯一键值,此更新操作将无法正确执行,需要查找冲突记录以便后续处理。技术实现思路1、为克服上述现有技术存在的不足,本发明之目的在于提供一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,能够确定存在多个唯一键的表更新键值,目标库存在记录冲突时,查找到冲突记录,以便后续容错处理。2、为达上述目的,本发明提出一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,包括如下步骤:3、步骤s1,根据多唯一键表的结构信息找出表中所有的主键、唯一键,并存放在一个集合set1中;4、步骤s2,根据所述集合set1和更新操作的内容,收集更新操作中所有被修改的唯一键,存入集合set2;5、步骤s3,遍历集合set2中的所有唯一键,依次组合查询语句,并使用唯一键更新之后的数据作为查询条件,查询目标库中的数据;6、步骤s4,若查询出记录,则表示该记录为冲突记录;若没有查询出数据,则执行步骤s3;7、步骤s5,根据查找出的目标端冲突记录用作后续容错处理。8、作为本发明的进一步优化,所述更新键值查找冲突记录方法为目标端违反唯一性约束冲突时,目标端进行的处理过程。9、作为本发明的进一步优化,于步骤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中。10、作为本发明的进一步优化,步骤s2进一步具体为:根据集合set1和更新操作的内容,将收集更新操作中所有被修改的唯一键{f1}、{f2}存入集合set2中。11、作为本发明的进一步优化,步骤s3进一步具体为:匹配f1键,用{f1}和此列更新之后的数据‘3’组合语句查询是否有记录“select f1,f2,f3,age,name from tab1 where f1= 3”。12、作为本发明的进一步优化,步骤s4进一步具体为:没有查询出记录,继续遍历,用{f2}和此列更新之后的数据‘2’组合语句查询是否有记录“select f1,f2,f3,age,namefrom tab1 where f2 = 2”,查询出记录,则该条记录为冲突记录。13、与现有技术相比,本发明公开的一个方面的有益效果在于:在源库修改多唯一键表中的多个键值,同步到目标库导致“违反唯一约束条件”的情况下,可以有效查找冲突记录,以便后续容错处理。技术特征:1.一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,包括如下步骤:2.如权利要求1所述的一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,其特征在于,所述更新键值查找冲突记录方法为目标端违反唯一性约束冲突的基础上,目标端进行的处理过程。3.如权利要求2所述的一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,其特征在于,于步骤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中。4.如权利要求3所述的一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,其特征在于,所述步骤s2进一步具体为:根据集合set1和更新操作的内容,将收集更新操作中所有被修改的唯一键{f1}、{f2}存入集合set2中。5.如权利要求4所述的一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,其特征在于,步骤s3进一步具体为:匹配f1键,用{f1}和f1列更新之后的数据“3”组合语句查询是否有记录。6.如权利要求5所述的一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,其特征在于,步骤s4进一步具体为:没有查询出记录,继续遍历,用{f2}和f2列更新之后的数据“2”组合语句查询是否有记录,查询出记录,则该条记录为冲突记录。技术总结本发明公开了一种数据库同步环境下多唯一键表更新键值查找冲突记录的方法,步骤S1,根据多唯一键表的结构信息找出表中所有的主键、唯一键,并存放在一个集合set1中;步骤S2,根据所述集合set1和更新操作的内容,收集更新操作中所有被修改的唯一键,存入集合set2;步骤S3,遍历集合set2中的所有唯一键,依次组合查询语句,并使用唯一键更新之后的数据作为查询条件,查询目标库中的数据;步骤S4,若查询出记录,则表示该记录为冲突记录;若没有查询出数据,则执行步骤S3;步骤S5,根据查找出的目标端冲突记录用作后续容错处理,可实现在有多个唯一键的表更新键值,目标库存在记录冲突时查找冲突记录。技术研发人员:李一铭,高志会,陈勇铨,江俊受保护的技术使用者:上海英方软件股份有限公司技术研发日:技术公布日:2024/1/13
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1