我是一个新的常客,并使用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中进行整个回滚?