通过FK整个层次结构

时间:2015-05-25 09:57:29

标签: oracle testing mocking dbunit


是否有一个工具(对于Oracle)将从所需的表开始为所有引用的表生成数据 例如:

ORDER has 3 not null FKs (CLIENT, PRODUCT, COUNTRY)
CLIENT has 2 not null FKs (COUNTRY, COMPANY)
  COMPANY has 2 not null FKs (COUNTRY, CONTINENT)
COUNTRY has 1 not null FK (CONTINENT)
PRODUCT has 5 not null FKs (MATERIAL, SIZE, ...
 MATERIAL has 2 not null FKs (...

层次结构不断发展 我只是想在我的数据库中添加一个ORDER来测试一些东西(使用 DBUnit ),但我不想在100个表中添加值。
生成的数据可能是虚拟的: 0表示数字 X表示char / varchars sysdate表示日期 systimestamp表示时间戳。只有 FK需要保持一致

它应该适用于Schemas(您可以将SCHEMA1.FK设置为​​SCHEMA2.TABLE) 它应该提示用户输入具有Check Constraints(除了' IS NOT NULL')之外的列,并向它们显示Check Constraint的文本。
它应该在插入后刷新(因为那里可能有触发器)。

1 个答案:

答案 0 :(得分:1)

简短回答 - 我不这么认为,至少在我需要做的时候不是这样。

我尝试编写一个脚本来执行此操作。

我赢了;不给你代码,但这是我在大纲中写的:

  1. 一个通用函数,它接受表名,所有者和where子句作为inpits,并从表中返回基于XMLAGG / XMLELEMENT的查询的XMLTYPE数据。
  2. 返回给定所有者/表的FK子表列表的函数。
  3. 给定1和2,您可以构造一个具有起点(table和data / where子句)的递归过程,然后沿着树下行。
  4. 每次返回都会添加XMLTYpe,并将其返回为XMLdata。

    最终结果是一个XMLTYpe,它以一种你应该能够处理递归INSERT的形式显示递归数据。

    然后将XMLTYpe写入文件。

    我几年前做过另一个类似的过程,但是这个过程类似于数据库链接。

    我花了几天时间才能完成所有工作,但是当我们需要重现生产中的问题时,我们节省了大量时间。