7

我正在使用 Spring 通过 Spring 初始化 HSQL 数据库 2.2.9

<jdbc:initialize-database enabled="true">
    <jdbc:script execution="INIT" location="classpath:./create-tables.sql"/>
</jdbc:initialize-database>

create-tables.sql我使用

CREATE TABLE IF NOT EXISTS MyTable(...);

该表也有一个索引。我正在寻找一种比总是删除和创建索引更好的方法。

我试过了:

CREATE INDEX IF NOT EXISTS myIndex ...;
  • 不工作

如果找到索引,我可以创建一个indexExisting()检查系统表并返回 count(*) > 0 的函数,但是如果我写

IF indexExisting() = 0 THEN ...

直接进入.sql文件,它说

java.sql.SQLSyntaxErrorException: unexcepted token: IF

存储过程似乎也无济于事,因为据我所知,它们可能不包含 DROP 语句。

因此,除了删除/创建索引之外的解决方案将不胜感激。

谢谢

4

1 回答 1

4

最新版本的 HSQLDB 支持:

CREATE INDEX IF NOT EXISTS myIndex ...
DROP INDEX IF EXISTS myIndex
于 2016-04-04T10:16:43.803 回答