2015-04-27 2 views
2

Я использую HSQLDB для своих модульных тестов. Проблема в том, что мой проект содержит действительно много тестов и отбрасывает всю БД и воссоздает ее для каждого теста, занимает очень значительное количество времени. Я обнаружил, что новый HSQLDB содержит возможность удаления данных из схемы без существенного снижения таблиц, что значительно более эффективно. Единственная проблема заключается в том, что у меня есть две схемы и таблицы, которые относятся друг к другу. Так обычно я хотел бы написатьСхема усечения в HSQLDB

getSession().createSQLQuery("TRUNCATE SCHEMA aaa AND COMMIT").executeUpdate(); 
getSession().createSQLQuery("TRUNCATE SCHEMA bbb AND COMMIT").executeUpdate(); 

(где ааа и ГЭБ бы имена моих схем) Проблема состоит в том, что ааа содержит таблицы, которые ссылаются на таблицы в ГЭБ и ГЭБ содержит таблицы, которые ссылаются на таблицы в ааа, следовательно, всегда есть некоторые внешние ключи, которые мешают мне выполнять эти команды один за другим. Как я могу запустить его, чтобы все данные из моей БД были очищены?

ответ

1

Вы можете сделать это с помощью опции:

TRUNCATE SCHEMA aaa AND COMMIT NO CHECK 
+0

спасибо, это работает :) –

Смежные вопросы