如何使用Scala Slick在Postgres中进行隔离事务

时间:2014-02-14 12:47:21

标签: scala slick

我正在使用Slick访问我的Postgres SQL数据库。

我需要进行隔离的事务(可序列化或可重复读取)。

我在这里找到了以下代码https://github.com/slick/slick/issues/218

  def withIsolatedTransaction[R](level: Int)(block: => R)(implicit session: Session) = {
    require(session.conn.getAutoCommit, "A transaction has already been started")
    val oldLevel = session.conn.getTransactionIsolation
    session.conn.setTransactionIsolation(level)
    val r = session.withTransaction(block)
    session.conn.setTransactionIsolation(oldLevel)
    r
  }

有人可以告诉我在我的代码中使用这个是否是个好主意,或者是否有更好的方法来进行事务隔离?

1 个答案:

答案 0 :(得分:1)

这不是你要找的吗? http://slick.typesafe.com/doc/2.0.0/connection.html#transactions

(顺便说一句,你引用的代码在光滑(里程碑2.1)上有一个打开拉取请求:https://github.com/slick/slick/issues/218