gpt4 book ai didi

sql - 生成 PL/SQL 脚本以从许多相关表中创建记录副本

转载 作者:搜寻专家 更新时间:2023-10-30 23:47:42 24 4
gpt4 key购买 nike

对于给定的表和该表中一条记录的唯一 ID,生成一个 PL/SQL(或 SQL)脚本来创建该记录的副本,然后从表中创建所有记录的副本的最简单/最快的方法是什么与该记录有外键关系,然后所有表与那些第二层记录有外键关系,依此类推,直到模式中所有直接或间接相关表中的所有相关记录都被复制了吗?

此类脚本可用于捕获和再现记录和所有后代记录的状态以进行测试。

注意事项:

  • 架构有 500 多个表,因此手动编写此脚本会很慢。
  • 通过确保新记录具有自己生成/更改的主键值来避免违反唯一约束。使用 max(id_column) + 1 而不是序列生成新 ID 以简化问题。
  • 使用 Oracle 元数据表收集表列表,可能还有主键和外键列(?)。

谢谢。

最佳答案

假设 FK 存在且有效,您将从 dba_constraints 驱动它,从 r_constraint_name = 起始表的 PK 约束开始。对于找到的每个表,您将查询 dba_tab_columns 并从这里构建您的查询和生成的插入。您将递归地执行此操作以捕获树中的所有表。为了简化操作,我将生成一个存储过程 table_ins 包装器,这样当您生成 INSERT 时,您可以调用 store_proc 以避免必须为每一行生成 INSERT (col1, ....)。

关于sql - 生成 PL/SQL 脚本以从许多相关表中创建记录副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com