在groovy.sql中回滚整个事务

时间:2015-03-12 08:42:52

标签: mysql grails groovy transactions

我是一个新的常客,并使用groovy.sql将一些数据插入到几个表中,如下所示:

sql.cacheConnection {Connection connection - >
  connection.autoCommit = false
  try {
    def eventId = sql.firstrow("select eventId from event where...")
    if (eventId != null || eventId.size() != 0) {
      def qry = "Insert into table1 ... where eventId = :eventId"
      sql.execute(qry)
    }

    def meetId = sql.firstrow("select meetingId from meeting where...")
    if (meetId != null || meetId.size() != 0) {
      def qry2 = "Insert into table2 ... where meetingId = :meetingId"
      sql.execute(qry2)
    }

    // couple of inserts like this:
    // ....
  } catch (SQLException se) {
    println " Error: rolling back the transaction ---- " + se.getMessage()
    sql.rollback()
  }
  connection.autoCommit = true
}

我的问题是,在中间处理数据插入时,如果我断开vpn连接,我的脚本会中断并且表会被部分更新。

但是如果发生任何连接丢失,我真的需要回滚整个事务,而不是部分数据插入。如何在这个groovy sql中进行整个回滚?

0 个答案:

没有答案