如果满足条件,则从H2 sql脚本退出

时间:2019-09-16 13:10:26

标签: java junit h2

如果满足条件,我将尝试退出H2初始化脚本。
使用H2数据库完全可以做到这一点。

SET @COUNT = SELECT COUNT(*) AS count FROM information_schema.tables WHERE table_name = 'T_TABLE';
IF (@COUNT > 0) THEN RETURN;

我正在测试中初始化这样的数据。

@BeforeEach
public void setup() {
    if (db != null)
        return;

    db = new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.H2)
        .addScript("db-schema.sql")
        .build();
    given(builder.build()).willReturn(db);
    sut = new GPSOrderRepository(
        builder,
        sequenceService
    );
}

不幸的是,每次测试都会在数据库中提取该脚本,但是该脚本会创建表,因此在脚本已经执行后,随后的测试中会引发错误。

1 个答案:

答案 0 :(得分:0)

H2当前不支持条件执行语句。

因此,您需要检查Java代码中是否存在对象,或者,如果仅使用支持此类子句的命令,则可以尝试在所有命令中添加IF NOT EXISTS子句。

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

ALTER TABLE TABLE_NAME ADD CONSTRAINT IF NOT EXISTS CONSTRAINT_NAME ...;