Simular disparador con dbUnit

Estoy usando dbUnit para poner datos de prueba en DB con un conjunto de datos como

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

Mi problema es que hay un disparador al insertar en db que llena los registros secundarios en TABLE_2. Entonces cuando trato de

   DatabaseOperation.DELETE.execute();

en tearDown () falla con java.sql.SQLException: ORA-02292: restricción de integridad (TABLE_2_TABLE_1_FK) violada - registro secundario encontrado.

¿Hay alguna forma de simular el disparador al eliminar para que TABLE_1 elimine registros secundarios con dbUnit y no agregue el disparador a la base de datos?

preguntado el 05 de septiembre de 11 a las 16:09

2 Respuestas

No tenemos activadores en nuestras bases de datos, pero usamos dbunit y esto podría funcionar para usted:

Puede tener un conjunto de datos diferente para la operación DELETE que incluye la tabla en la que el disparador inserta datos. El orden es importante para que dbunit pueda realizar la operación de eliminación o inserción en la tabla que hace referencia a TABLE_1 primero ...

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

Respondido el 05 de Septiembre de 11 a las 22:09

Respondido el 05 de Septiembre de 11 a las 20:09

TRUNCATE no resuelve el problema: no podemos truncar tablas que tienen claves externas dependientes. - APC

Sí, entonces tal vez DeleteAllOperation lo haga dbunit.org/apidocs/org/dbunit/operation/DeleteAllOperation.html - bpgergo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.