dillonma 2013-07-29 09:47 采纳率: 0%
浏览 2303

oracle修改一个表中的主键字段值,与其外键关联的另一个表中的相应字段值也改变

oracle 中修改一个表中的主键字段值,与其外键关联的另一个表中的相应字段值也改变?
有如下两张表,表a和表b

表a 结构如下:
ID Name age
1 lisi 18
2 wangwu 21
3 sunliu 34
4 yiliu 24
... ... ...
其中ID字段为表a主键且自增
表b结构如下:
CID CNAME ID
1 aaaaa 1
2 bbbbb 2
3 cccccc 4
4 ddddd 3
其中CID为表b主键,自增;表a中ID与表b中ID主外键关联
现在我想修改表a中的主键字段值,将其都加上10并且表b中的ID字段值也一起改变。
得到的结果是:
表a:
ID Name age
11 lisi 18
12 wangwu 21
13 sunliu 34

14 yiliu 24

表b:
CID CNAME ID
1 aaaaa 11
2 bbbbb 12
3 cccccc 14
4 ddddd 13
请问怎么实现sql语句。。。

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-09 14:31
    关注

    为了修改表 a 中的主键字段值并将这些修改反映到表 b 中,您可以使用以下 SQL 语句:

    UPDATE a
    SET a.ID = a.ID + 10
    WHERE a.ID IN (SELECT ID FROM b);
    
    UPDATE b
    SET b.ID = b.ID + 10
    WHERE b.ID IN (SELECT ID FROM a);
    

    请注意,这些语句假定 ID 是表 a 和表 b 中的数字列。


    注意:在这种情况下,您还需要确保 ID 列在表 a 和表 b 中都是唯一的。如果 ID 列不是唯一的,则可能会出现重复数据并导致错误。


    此外,在执行上述操作之前,您还应确保已禁用表 a 和表 b 上的所有外键约束。这将允许您修改主键字段值,而不会触发外键约束。在完成修改后,您还应重新启用这些约束。


    最后,您应该记住在修改表中的主键字段值时,应小心谨慎。这种修改可能会对数据库中的其他对象产生影响,并且可能会破坏数据库的完整性。因此,您应该确保在修改主键字段值之前,您已经认真考虑了所有可能的后果。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算