Transaction

Transaction

If you want to begin a transaction, you have to create a session with engine.NewSession() at first, and then start session.Begin() and don’t forget invoke session.Commit() after all operations finished.

Don’t forget invoke session.Close().

  1. session := engine.NewSession()
  2. defer session.Close()
  3. // add Begin() before any action
  4. err := session.Begin()
  5. user1 := Userinfo{Username: "xiaoxiao", Departname: "dev", Alias: "lunny", Created: time.Now()}
  6. _, err = session.Insert(&user1)
  7. if err != nil {
  8. session.Rollback()
  9. return
  10. }
  11. user2 := Userinfo{Username: "yyy"}
  12. _, err = session.Where("id = ?", 2).Update(&user2)
  13. if err != nil {
  14. session.Rollback()
  15. return
  16. }
  17. _, err = session.Exec("delete from userinfo where username = ?", user2.Username)
  18. if err != nil {
  19. session.Rollback()
  20. return
  21. }
  22. // add Commit() after all actions
  23. err = session.Commit()
  24. if err != nil {
  25. return
  26. }