在 HSQLDB 中截断模式

Posted

技术标签:

【中文标题】在 HSQLDB 中截断模式【英文标题】:Truncate schema in HSQLDB 【发布时间】:2015-04-27 16:54:18 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

你可以通过一个选项来做到这一点:

TRUNCATE SCHEMA aaa AND COMMIT NO CHECK

【讨论】:

以上是关于在 HSQLDB 中截断模式的主要内容,如果未能解决你的问题,请参考以下文章

UCanAccess:截断模式支持不起作用

如何在嵌入式模式下自动创建 hsqldb

hsqldb 是不是支持 oracle 兼容模式下的表别名

关机后如何以编程方式重新启动 HSQLDB(文件模式)?

帮助为 hsqldb 创建模式 sql

如何删除 hsqldb 中的默认数据库/模式