scala - 使用 slick 使用 scala 获取条件索引
问题描述
所以我试图实现从我的数据库到我的光滑表的索引。我使用 postgres 作为我的数据库,这就是我的索引的样子:
"index_unq_user_status" UNIQUE, btree (user_id) WHERE status::text = 'Pending'::text
基本上,如果它们都具有“待定”状态,则不能是具有相同 user_id 的两行。
我的问题是什么?当我用 Slick 生成我的表时,我得到了这个:
val index1 = index("index_unq_user_status", userId, unique=true)
这意味着,只能是一个用户 ID 的一行。
我想使用 h2 数据库进行集成测试,它使用 slick 中的表并创建错误的索引。
有什么方法可以在 slick 中实现该条件索引?
解决方案
Sick 没有对部分索引的内置或直接支持。
但是,由于您index1
正在创建 SQL DDL 语句以更改架构(如果您应用它们),您可以做的是: remove index1
,而不是在应用表查询之后,.schema.create
您可以运行一个普通的 SQL 语句来应用您的索引。
概括地说,这将是这样的:
val addIndex = sqlu""" ALTER TABLE table ADD INDEX ... """
val createAction = (MyTable.schema.create andThen addIndex)
我不确定您是如何构建 H2 集成测试的,但您可以有条件地在这些测试中省略特定addIndex
于 PG 的测试。
推荐阅读
- python - 删除csv python Panda中的行
- javascript - 我可以在 JavaScript 中获取生成器的当前值吗?
- angular - 如何使用带有角度本地化的本地化资产
- php - 我无法使用我的应用程序 SQLSTATE[HY000] [1045] 访问我的 MYSql 服务器 'root'@'localhost' 用户拒绝访问(使用密码:否)
- web-applications - 为什么 ffuf 不能与大词汇表一起正常工作?
- c++ - clang 中的非类型模板参数
- three.js - three.js WebGL:INVALID_OPERATION:drawElements:没有使用有效的着色器程序
- delphi - 检查一个类是否有抽象函数
- javascript - Node.js 缓冲区在类中未定义
- linux - Nginx 启动失败 - 我该如何修复该问题?