数据库事务使用

使用场景:
如银行的转账操作,减去A账户的金额与增加B账户的金额
要么同时发生,要么同时不发生
当由于网络等问题导致其中一项操作没有成功时
要么全部回滚,即回到没有转账的初始状态
或者标记没有成功的地方进行执行,使之全部执行成功

使用事务的好处:
1.将相关操作放入同一个事务中,要么全部成功要么全部失败,保持了一致性
2.可将事务异步执行,减少前端等待时间,提高用户体验
3.后端代码更具低耦合性

mysql的事务使用:
begin
update person set name='sunsun' where id =1
select * from person
              commit
select * from person


xorm的事务使用
session := engine.NewSession()
defer session.Close()
// add Begin() before any action
err := session.Begin()
user1 := Userinfo{Username: "xiaoxiao", Departname: "dev", Alias: "lunny", Created: time.Now()}
_, err = session.Insert(&user1)
if err != nil {
    session.Rollback()
    return
}
user2 := Userinfo{Username: "yyy"}
_, err = session.Where("id = ?", 2).Update(&user2)
if err != nil {
    session.Rollback()
    return
}

_, err = session.Exec("delete from userinfo where username = ?", user2.Username)
if err != nil {
    session.Rollback()
    return
}

// add Commit() after all actions
err = session.Commit()
if err != nil {
    return
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值