fixed #86, increment version field after update
This commit is contained in:
parent
81c947b61b
commit
b1dfd648f2
|
@ -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 {
|
||||||
|
|
Loading…
Reference in New Issue