在 HSQLDB 中截断模式

Truncate schema in HSQLDB

我正在使用 HSQLDB 进行单元测试。问题是我的项目包含很多测试并且删除整个数据库并为每个测试重新创建它需要花费大量时间。我发现新的 HSQLDB 包含从模式中删除数据而不真正删除表的可能性,这样效率要高得多。唯一的问题是我有两个相互关联的模式和表。所以通常我会写

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

(其中 aaa 和 bbb 是我的模式的名称) 问题是 aaa 包含引用 bbb 中表的表,而 bbb 包含引用 aaa 中表的表,因此总是有一些外键阻止我一个接一个地执行这些命令。 我怎么可能 运行 它,以便清除我数据库中的所有数据?

你可以通过一个选项来完成:

TRUNCATE SCHEMA aaa AND COMMIT NO CHECK