由于我在我的项目中使用的主题数据的性质,在输入集中经常要满足重复记录(有时这意味着在同一输入集中存在重复记录,并且可以通过预先插入来轻松处理)过滤,但通常输入集可以包含与数据库中已存在的记录重复的记录)。
MySQL和SQLite的INSERT IGNORE
功能在处理此问题方面有很大帮助。
所以我的问题是:
INSERT IGNORE
而不是裸INSERT
? INSERT IGNORE
功能的最佳方法是什么? 最佳答案
我没有使用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
的方法与驱动程序无关,因此您可以使用相同的结构为任何数据库添加功能。关于scala - 如何使用Slick进行INSERT IGNORE查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14861467/