【问题标题】:sqldelight: How to ensure that `create` is only called oncesqldelight:如何确保只调用一次`create`
【发布时间】:2020-06-01 15:18:05
【问题描述】:

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

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

我正在寻找的是这样的:

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

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

【问题讨论】:

  • 你为什么平台写这个? Android、iOS、JVM?
  • JVM(这只是额外的文本,至少有 12 个字符...)

标签: kotlin sqldelight


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的链接。我想知道为什么没有关于此的官方文档。
猜你喜欢
  • 1970-01-01
  • 2018-12-14
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
  • 2012-11-01
相关资源
最近更新 更多