3
使用下面的爲什麼不用groovy和SqlException的事務回滾?
import groovy.sql.Sql
def sql = Sql.newInstance("jdbc:mysql://localhost:3306/eventDb", "user",
"pwd", "com.mysql.jdbc.Driver")
def sqlInsert = "INSERT INTO GTEST (EVENTID,TSTAMP,USER_ID,USER_FIRST_NAME) VALUES (?,?,?,?)"
def sqlParams = ['EVENTID':0, 'TSTAMP':'','USER_ID':'janew','USER_FIRST_NAME':'janewithaverylongnamesothatitdoesntfitwell']
sqlParams['TSTAMP'] = new Date()
sql.withTransaction {stmt ->
def eventId = sql.executeInsert("INSERT INTO EVENTS (LOGID,TSTAMP) VALUES (2,CURRENT_TIMESTAMP)")
sqlParams['EVENTID'] = eventId [0][0]
sql.executeInsert(sqlInsert, sqlParams.values().toList())
}
第二個執行會失敗,但是第一次插入不回滾。我在這裏做錯了什麼?
謝謝! GTest是innoDB,但事件表確實是MyISAM。 – mosgjig