MCPcopy
hub / github.com/go-gorm/gorm / SavePoint

Method SavePoint

finisher_api.go:737–758  ·  view source on GitHub ↗
(name string)

Source from the content-addressed store, hash-verified

735}
736
737func (db *DB) SavePoint(name string) *DB {
738 if savePointer, ok := db.Dialector.(SavePointerDialectorInterface); ok {
739 // close prepared statement, because SavePoint not support prepared statement.
740 // e.g. mysql8.0 doc: https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html
741 var (
742 preparedStmtTx *PreparedStmtTX
743 isPreparedStmtTx bool
744 )
745 // close prepared statement, because SavePoint not support prepared statement.
746 if preparedStmtTx, isPreparedStmtTx = db.Statement.ConnPool.(*PreparedStmtTX); isPreparedStmtTx {
747 db.Statement.ConnPool = preparedStmtTx.Tx
748 }
749 db.AddError(savePointer.SavePoint(db, name))
750 // restore prepared statement
751 if isPreparedStmtTx {
752 db.Statement.ConnPool = preparedStmtTx
753 }
754 } else {
755 db.AddError(ErrUnsupportedDriver)
756 }
757 return db
758}
759
760func (db *DB) RollbackTo(name string) *DB {
761 if savePointer, ok := db.Dialector.(SavePointerDialectorInterface); ok {

Callers 1

TransactionMethod · 0.95

Calls 2

AddErrorMethod · 0.95
SavePointMethod · 0.65

Tested by

no test coverage detected