GORM 入门笔记(十二)事务的使用与坑
普通事务
使用 Transaction()
可以开启事务,在其中传入一个签名为 func(tx *gorm.DB) error
的函数,在函数内操作,如果返回的 error 不为空,则这些操作都作废
1 | GLOBAL_DB.Transaction( |
事务可以嵌套,如果内部事务出错,只会回滚内部语句
手动事务
另外一种形式是手动事务
1 | tx := GLOBAL_DB.Begin() // 开启事务 |
进阶一点的操作是设置存档点,还有手动回档
1 | tx := GLOBAL_DB.Begin() // 开启事务 |
坑
GORM 的事务在多协程场景下貌似手动上锁,请见gorm的坑
评论
GiscusTwikoo