使用 dbUnit 模拟触发器

发布于 2024-12-03 04:34:43 字数 451 浏览 3 评论 0原文

我使用 dbUnit 将测试数据放入数据库中,数据集如

     <dataset>
        <TABLE_1 PRIMARY_KEY_COL="10000001" OTHER_COL="Some Text"/>
     </dataset>

我的问题是数据库中有插入触发器,可将子记录填充到 TABLE_2 中。因此,当我尝试

   DatabaseOperation.DELETE.execute();

tearDown()时,它失败并出现java.sql.SQLException:ORA-02292:违反完整性约束(TABLE_2_TABLE_1_FK) - 找到子记录。

有没有办法模拟 TABLE_1 的删除触发器以使用 dbUnit 删除子记录并且不将触发器添加到 DB 中?

I'm using dbUnit to put test data in DB with dataset like

     <dataset>
        <TABLE_1 PRIMARY_KEY_COL="10000001" OTHER_COL="Some Text"/>
     </dataset>

My problem is that there's on-insert trigger in db that populates child records into TABLE_2. So when I try to

   DatabaseOperation.DELETE.execute();

at tearDown() it fails with java.sql.SQLException: ORA-02292: integrity constraint (TABLE_2_TABLE_1_FK) violated - child record found.

Is there any way to simulate on-delete trigger for TABLE_1 to delete child records with dbUnit and do not add trigger into DB?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

稀香 2024-12-10 04:34:43

我们的数据库中没有触发器,但我们使用 dbunit,这可能对您有用:

您可以为 DELETE 操作使用不同的数据集,其中包括触发器将数据插入到的表。顺序很重要,因此 dbunit 可以对首先引用 TABLE_1 的表执行删除或插入操作...

<dataset>
    <TABLE_WITH_TRIGGERED_DATA_HERE...>
    <TABLE_1 PRIMARY_KEY_COL="10000001" OTHER_COL="Some Text"/>
 </dataset>

We do not have triggers in our databases, but we do use dbunit and this might work for you:

You can have a different dataset for the DELETE operation that includes the table where the trigger inserts data into. Order is important so dbunit can do the delete or insert operation on the table that references TABLE_1 first...

<dataset>
    <TABLE_WITH_TRIGGERED_DATA_HERE...>
    <TABLE_1 PRIMARY_KEY_COL="10000001" OTHER_COL="Some Text"/>
 </dataset>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文