由于我在我的项目中使用的主题数据的性质,在输入集中经常需要重复记录(有时它意味着在同一输入集中重复记录,这可以通过预插入轻松处理过滤,但通常输入集可以包含与数据库中已存在的记录重复的记录.
MySQL和SQLite INSERT IGNORE
功能有助于处理这个问题.
所以我得到的问题是:
在将数据插入MySQL或SQLite数据库时,如何使Slick使用INSERT IGNORE
而不是裸INSERT
?
INSERT IGNORE
使用Slick与MS SQL Server本地不支持时,模拟功能的最佳方法是什么?
我对Slick没有经验.从我收集的源代码中,为了使Slick能够使用,INSERT IGNORE
您需要执行以下几个步骤:
InsertBuilder
通过创建的默认值def createInsertBuilder(node: Node): InsertBuilder
.扩展它并添加一个类似于该buildInsert
方法的专用方法.InsertInvoker
通过创建的默认值def createCountingInsertInvoker[T, U](u: ShapedValue[T, U])
.扩展它,并添加insertIgnore
这应该是类似于def insert[TT](query: Query[TT, U])(implicit session: Session): RetQuery
从FullInsertInvoker
至于你的第二个问题.在INSERT IGNORE
不支持数据库的情况下实施变通方法是依赖于数据库的,google将帮助您找到不同的实现.由于上述添加方法与INSERT IGNORE
驱动程序无关,因此可以使用相同的结构为任何数据库添加功能.