Имитировать триггер с помощью dbUnit - PullRequest
4 голосов
/ 05 сентября 2011

Я использую dbUnit для помещения тестовых данных в БД с набором данных, подобным

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

Моя проблема в том, что в db есть триггер при вставке, который заполняет дочерние записи в TABLE_2.Поэтому, когда я пытаюсь

   DatabaseOperation.DELETE.execute();

в tearDown (), происходит сбой с java.sql.SQLException: ORA-02292: нарушение целостности (TABLE_2_TABLE_1_FK) нарушено - найдена дочерняя запись.

Есть лиМожно ли имитировать триггер при удалении для TABLE_1, чтобы удалить дочерние записи с помощью dbUnit и не добавлять триггер в БД?

Ответы [ 2 ]

1 голос
/ 05 сентября 2011

У нас нет триггеров в наших базах данных, но мы используем dbunit, и это может работать для вас:

Вы можете иметь другой набор данных для операции DELETE, который включает таблицу, в которую триггер вставляет данные в,Порядок важен, поэтому dbunit может выполнить операцию удаления или вставки таблицы, которая сначала ссылается на TABLE_1 ...

<dataset>
    <TABLE_WITH_TRIGGERED_DATA_HERE...>
    <TABLE_1 PRIMARY_KEY_COL="10000001" OTHER_COL="Some Text"/>
 </dataset>
0 голосов
/ 05 сентября 2011

Я просто поставил две ссылки здесь, их должно быть достаточно

http://www.dbunit.org/apidocs/org/dbunit/operation/TruncateTableOperation.html

http://www.dbunit.org/bestpractices.html#nocleanup

...