文档:
https://goframe.org/pages/viewpage.action?pageId=1114286
常用:
db.Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {_, err := tx.Model("").Ctx(ctx).Where("shop_id = ?", shopId).Delete()if err != nil {return err}return nil})
事物嵌套
db.Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {// Nested transaction 1.if err := db.Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {_, err := db.Model(table).Ctx(ctx).Data(g.Map{"id": 1, "name": "john"}).Insert()return err}); err != nil {return err}// Nested transaction 2, panic.if err := db.Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {_, err := db.Model(table).Ctx(ctx).Data(g.Map{"id": 2, "name": "smith"}).Insert()// Create a panic that can make this transaction rollback automatically.panic("error")return err}); err != nil {return err}return nil})
