dtm
dtm copied to clipboard
请问这种场景应该怎么使用呀?需要根据条件再开启一个事务。
请问这种场景应该怎么使用呀?需要根据条件再开启一个事务。如果这么调用内部会调用2次 tx.Commit()
` barrier, err := dtmgrpc.BarrierFromGrpc(ctx)
if err != nil {
return nil, err
}
tx := db.Begin()
sourceTx := tx.Statement.ConnPool.(*sql.Tx)
return &emptypb.Empty{}, barrier.Call(sourceTx, func(_ *sql.Tx) error {
return ( tx *gorm.DB)error{
if condition {
msg:= dtmgrpc.NewMsgGrpc(host, gid)
msg.Add(...)
err := msg.DoAndSubmit(QueryPrepare, func(bb *dtmcli.BranchBarrier) error {
return bb.Call(sourceTx, func(tx *sql.Tx) error {
return nil
})
})
}}()
})
}`