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

Posted

技术标签:

【中文标题】如果满足条件,则退出 H2 sql 脚本【英文标题】:exit from H2 sql script if a condition is met 【发布时间】:2019-09-16 13:10:26 【问题描述】:

如果满足条件,我将尝试退出 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】:

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

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

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

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

【讨论】:

以上是关于如果满足条件,则退出 H2 sql 脚本的主要内容,如果未能解决你的问题,请参考以下文章

MySQL存储过程——一一检查是不是满足某些条件;如果不满足,则退出程序并返回特定消息

excel 满足一个条件 显示对应行倒数第二行?

bash脚本

SQL 语句 join where 如果一个条件不满足,则执行另一个条件

SQL - 如果满足使用多个先前列的条件,则 LAG 获取先前值

掷骰子游戏做while循环不满足退出条件