0

如何确保Database.Schema.create()在使用应用程序时只调用一次?您可以添加...IF NOT EXISTS...到表定义中,然后在每次启动期间执行 SQL 指令,但在第一次运行后不会创建表,但是,我不确定这是否是正确的方法。

或者,我可以查询这些表并检查它们是否已经存在。

我正在寻找的是这样的:

if (<first run>) {
    Database.Schema.create()
}

我以为我可以为此使用迁移,但是迁移对于 sqldelight 的工作方式似乎与我预期的不同(我试图在迁移中创建表,但这不起作用)。

4

1 回答 1

3

这里发布了一个非常有用的回复:https ://github.com/cashapp/sqldelight/issues/1605

它基本上归结为将当前版本存储在内部PRAGMA user_version(最初为 0)并在此版本与最新迁移版本不同时执行迁移。

这样做的好处是版本存储在数据库中。我已经为我的 Kotlin 项目采用了这个解决方案。

于 2020-02-22T10:57:57.163 回答