2014-02-14 26 views
0

我正在使用Slick來訪問我的Postgres SQL數據庫。如何在Scala Slick中完成Postgres中的單獨事務

我需要做一個孤立的事務(可序列化或可重複讀取)。

我發現下面的代碼在這裏在線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

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

(順便說一句,你引用的代碼有光滑(里程碑2.1開放拉請求)位置:https://github.com/slick/slick/issues/218

+0

我覺得我堅持用油滑1.0,除非播放光滑插件支持滑頭2.0 – yzernik

+1

我想你現在擁有的代碼是目前的方式。另請參閱此博客文章,瞭解有關隔離遊戲的信息,同時也可以參閱http://blog.codacy.com/understanding-isolation-levels/ –

相關問題