玩框架 Slick 3 如何通过 scala 禁用 H2 外键约束?
Play framework Slick 3 how to disable H2 foreign key constraints by scala?
我正在使用 Scala 的 Play 框架 2.3。对于数据库管理,我使用的是 slick 3。我想暂时禁用 H2 数据库的外键约束。我发现在 H2 中通过 SET REFERENTIAL_INTEGRITY FALSE 是可能的。但我不知道如何通过 Scala 来设置它。你能告诉我吗?
您可以使用普通的 sqlu"SET REFERENTIAL_INTEGRITY FALSE"。请参阅 http://slick.typesafe.com/doc/3.0.0/sql.html
编辑:这是工作代码,
import slick.driver.H2Driver.api._
import scala.concurrent.ExecutionContext.Implicits.global
object Test extends App {
def db = Database.forURL(
url = s"jdbc:h2:mem:test",
driver = "org.h2.Driver"
)
def disableRefInt = {
val result = db.run(sqlu"SET foreign_key_checks = 0 ");
result onSuccess {
case x => println("Done with the command" + x.toString());
}
result onFailure {
case x => println("Not Done with the command" + x.toString());
}
}
}
出于某种原因 "set referential_integrity false" 出错,而 "set foreign_key_checks=0" 似乎工作正常。
我正在使用 Scala 的 Play 框架 2.3。对于数据库管理,我使用的是 slick 3。我想暂时禁用 H2 数据库的外键约束。我发现在 H2 中通过 SET REFERENTIAL_INTEGRITY FALSE 是可能的。但我不知道如何通过 Scala 来设置它。你能告诉我吗?
您可以使用普通的 sqlu"SET REFERENTIAL_INTEGRITY FALSE"。请参阅 http://slick.typesafe.com/doc/3.0.0/sql.html
编辑:这是工作代码,
import slick.driver.H2Driver.api._
import scala.concurrent.ExecutionContext.Implicits.global
object Test extends App {
def db = Database.forURL(
url = s"jdbc:h2:mem:test",
driver = "org.h2.Driver"
)
def disableRefInt = {
val result = db.run(sqlu"SET foreign_key_checks = 0 ");
result onSuccess {
case x => println("Done with the command" + x.toString());
}
result onFailure {
case x => println("Not Done with the command" + x.toString());
}
}
}
出于某种原因 "set referential_integrity false" 出错,而 "set foreign_key_checks=0" 似乎工作正常。