修改表结构,更换主键,原来的数据还能留下么?
现有A表、B表、C表。
A表中主键为 a varchar(7)
B表中某列为 b varchar(7) not null
C表中某列为 c number(15) not null
原本的关系是,A表中主键a的数据是与B表中b相同的,也就是所谓外键。现在由于需求问题,需要将主键a的数据与c相同。也就是需要更改A表中主键名称以及主键约束(属性)。但是这样的话,A表中之前的数据就不能用了,但是这批数据又不能丢掉。
我的解决办法是,先导出A表原有数据,然后修改A表结构(添加一列、更换主键),查找C表中对应原A表中每行数据的c的值插入新A表。
但是这样做的话很麻烦,因为数据量较大。请教各位大牛还有其他方法不?
------解决方案--------------------
没看懂你说的是什么。要同步为什么不能C被A同步?
直接就把A表和B表一起改了完事,他们的主外键的值又不代表业务逻辑。表结构能不动尽量不动,在你对整体一无所知的情况下。
你是用手去一条一条改吗?不是的话数据量大不大有什么区别?大到跑不动了?加索引,做标记分批处理。
------解决方案--------------------你如果怕丢数据,可以先建一个跟当前表结构相同的表,把数据导入到这个备份表中,然后再该表结构。