背景:
我有两个表:markettypewagerlimitgroups(mtwlg)和stakedistributionindicators(sdi)。当创建一个mtwlg时,sdi表中会创建2行与mtwlg相关联的行,每行除了id和另一个字段(我们称之为X列)外,其余值相同。其中一行的X列必须包含0,而另一行的X列必须包含1。
我们代码库中存在一个错误,导致这个过程无法自动完成,因此在该错误存在期间创建的任何mtwlg都没有相关的sdi,从而在各个地方引发NPE。
为了解决这个问题,需要编写一个补丁来循环遍历mtwlg表,并针对每个ID,在sdi表中搜索2个相关的行。如果已经存在这些行,则不进行任何操作;如果只有1行,则检查F是否为0或1,并插入具有另一个值的行;如果两行都不存在,则插入它们。这需要针对每个mtwlg执行,并且需要插入唯一的ID。
伪代码:
如果有用的话-修补程序将使用liquibase应用。任何人都有任何建议或想法是否以及如何在SQL / liquibase补丁中编写这个?提前感谢,让我知道您需要的其他信息。编辑:实际上,我已被建议使用PL / SQL来完成此操作,您对此有任何想法/建议吗?再次感谢。
为了解决这个问题,需要编写一个补丁来循环遍历mtwlg表,并针对每个ID,在sdi表中搜索2个相关的行。如果已经存在这些行,则不进行任何操作;如果只有1行,则检查F是否为0或1,并插入具有另一个值的行;如果两行都不存在,则插入它们。这需要针对每个mtwlg执行,并且需要插入唯一的ID。
伪代码:
For each market type wager limit group ID
Check if there are 2 rows with that id in the stake distributions table, 1 where column X = 0 and one where column X = 1
if none
create 2 rows in the stake distributions table with unique id's; 1 for each X value
if one
create the missing row in the stake distributions table with a unique id
if 2
do nothing
如果有用的话-修补程序将使用liquibase应用。任何人都有任何建议或想法是否以及如何在SQL / liquibase补丁中编写这个?提前感谢,让我知道您需要的其他信息。编辑:实际上,我已被建议使用PL / SQL来完成此操作,您对此有任何想法/建议吗?再次感谢。