我使用HSQLDB进行单元测试。问题是我的项目包含很多测试并丢弃整个数据库并为每次测试重新创建它需要相当长的时间。我发现新的HSQLDB包含从架构中删除数据的可能性,而不会真正丢弃表,这显然更有效。唯一的问题是我有两个相互关联的模式和表。通常我会写
getSession().createSQLQuery("TRUNCATE SCHEMA aaa AND COMMIT").executeUpdate();
getSession().createSQLQuery("TRUNCATE SCHEMA bbb AND COMMIT").executeUpdate();
(其中aaa和bbb是我的模式的名称) 问题是aaa包含引用bbb中的表的表,而bbb包含引用aaa中的表的表,因此总会有一些外键阻止我一个接一个地执行这些命令。 我怎么可能运行它,以便我的数据库中的所有数据都被清除?
答案 0 :(得分:1)
您可以使用选项:
TRUNCATE SCHEMA aaa AND COMMIT NO CHECK