fixed #86, increment version field after update

This commit is contained in:
Nash Tsai 2014-04-11 21:31:44 +08:00
parent 81c947b61b
commit b1dfd648f2
1 changed files with 6 additions and 1 deletions

View File

@ -2981,6 +2981,8 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
var sqlStr, inSql string var sqlStr, inSql string
var inArgs []interface{} var inArgs []interface{}
doIncVer := false
var verValue *reflect.Value
if table.Version != "" && session.Statement.checkVersion { if table.Version != "" && session.Statement.checkVersion {
if condition != "" { if condition != "" {
condition = fmt.Sprintf("WHERE (%v) AND %v = ?", condition, condition = fmt.Sprintf("WHERE (%v) AND %v = ?", condition,
@ -3003,12 +3005,13 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
session.Engine.Quote(table.Version)+" = "+session.Engine.Quote(table.Version)+" + 1", session.Engine.Quote(table.Version)+" = "+session.Engine.Quote(table.Version)+" + 1",
condition) condition)
verValue, err := table.VersionColumn().ValueOf(bean) verValue, err = table.VersionColumn().ValueOf(bean)
if err != nil { if err != nil {
return 0, err return 0, err
} }
condiArgs = append(condiArgs, verValue.Interface()) condiArgs = append(condiArgs, verValue.Interface())
doIncVer = true
} else { } else {
if condition != "" { if condition != "" {
condition = "WHERE " + condition condition = "WHERE " + condition
@ -3035,6 +3038,8 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
res, err := session.exec(sqlStr, args...) res, err := session.exec(sqlStr, args...)
if err != nil { if err != nil {
return 0, err return 0, err
} else if doIncVer {
verValue.SetInt(verValue.Int() + 1)
} }
if cacher := session.Engine.getCacher2(table); cacher != nil && session.Statement.UseCache { if cacher := session.Engine.getCacher2(table); cacher != nil && session.Statement.UseCache {