我遇到下面的这种情况:
现在A库中有会员表,会员卡表,会员与卡的关系表,B库中也有这三个表,两个库的会员表的手机号是一对一的关系,是相等的,主键不相等。
想用A库中这三个表的主键(会员id,卡id,关系表中的会员id与卡id)去更新B库中对应的三个表的主键,唯一的关系就是会员的手机号一样。
我开始老是想通过一个sql语句解决,通过会员的手机号更新一下就可以了,但没写出来,后来咨询了下采用下面的这个办法靠谱。
完成这件事:建了两个中间表,一个是用手机号做关联将两个库的会员id保存做一个临时表,之后用临时表去更新B库里面的会员id,
过程中遇到了下面的问题ORA-01407 cannot update 。。。 TO NULL,我的sql是update t_member set id=(select mem_mid.mid from mem_mid where mem_mid.mid=t_member.id);
查了一下资料,参考了这篇文章:http://space.itpub.net/7199859/viewspace-430077,一下子就解决了;另外一个中间表,是通过会员id相等将两个库的卡表的id保存在一个临时表中,
之后用临时表去更新B库的卡id。
我更新成功的一个sql语句如下:
update t_member t set t.id=(select mem_mid.lid from mem_mid where mem_mid.mid=t.id)
where exists (select * from mem_mid b where t.id=b.mid);
其实就是一个的小问题,在这里记录一下,说不定谁就遇到了或者以后我还会遇到类似的事情。
update原理: