ORA-01407 cannot update 。。。 TO NULL

在尝试通过手机号更新不同数据库中会员表的主键时,遇到ORA-01407错误。创建了两个中间表来关联两个库的会员ID,并使用存在的子句更新B库的ID。最终通过特定SQL语句解决问题。
摘要由CSDN通过智能技术生成

 

我遇到下面的这种情况:

现在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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值