• 事务处理

    事务处理

    当使用事务处理时,需要创建Session对象。在进行事物处理时,可以混用ORM方法和RAW方法,如下代码所示:

    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. }
    • 注意如果您使用的是mysql,数据库引擎为innodb事务才有效,myisam引擎是不支持事务的。