github.com/gogf/gf@v1.16.9/.example/database/gdb/mysql/gdb_transaction_savepoint.go (about) 1 package main 2 3 import ( 4 "github.com/gogf/gf/frame/g" 5 ) 6 7 func main() { 8 var ( 9 err error 10 db = g.DB() 11 table = "user" 12 ) 13 tx, err := db.Begin() 14 if err != nil { 15 panic(err) 16 } 17 defer func() { 18 if err := recover(); err != nil { 19 _ = tx.Rollback() 20 } 21 }() 22 if _, err = tx.Model(table).Data(g.Map{"id": 1, "name": "john"}).Insert(); err != nil { 23 panic(err) 24 } 25 if err = tx.SavePoint("MyPoint"); err != nil { 26 panic(err) 27 } 28 if _, err = tx.Model(table).Data(g.Map{"id": 2, "name": "smith"}).Insert(); err != nil { 29 panic(err) 30 } 31 if _, err = tx.Model(table).Data(g.Map{"id": 3, "name": "green"}).Insert(); err != nil { 32 panic(err) 33 } 34 if err = tx.RollbackTo("MyPoint"); err != nil { 35 panic(err) 36 } 37 if err = tx.Commit(); err != nil { 38 panic(err) 39 } 40 }