diff --git a/internal/db/models/sys_locker_dao.go b/internal/db/models/sys_locker_dao.go index 3169bcfd..51a053e2 100644 --- a/internal/db/models/sys_locker_dao.go +++ b/internal/db/models/sys_locker_dao.go @@ -157,7 +157,7 @@ func (this *SysLockerDAO) Increase(tx *dbs.Tx, key string, defaultValue int64) ( } // combine statements to make increasing faster - colValue, err := tx.FindCol(0, "INSERT INTO `"+this.Table+"` (`key`, `version`) VALUES ('"+key+"', "+types.String(defaultValue)+") ON DUPLICATE KEY UPDATE `version`=`version`+"+types.String(sysLockerStep)+"; SELECT `version` FROM `"+this.Table+"` WHERE `key`='"+key+"'") + colValue, err := tx.FindCol(0, "INSERT INTO `"+this.Table+"` (`key`, `version`) VALUES ('"+key+"', "+types.String(defaultValue+sysLockerStep)+") ON DUPLICATE KEY UPDATE `version`=`version`+"+types.String(sysLockerStep)+"; SELECT `version` FROM `"+this.Table+"` WHERE `key`='"+key+"'") if err != nil { if CheckSQLErrCode(err, 1064 /** syntax error **/) { // continue to use seperated query diff --git a/internal/db/models/sys_locker_dao_test.go b/internal/db/models/sys_locker_dao_test.go index 40b774f6..42aa61e1 100644 --- a/internal/db/models/sys_locker_dao_test.go +++ b/internal/db/models/sys_locker_dao_test.go @@ -43,6 +43,25 @@ func TestSysLocker_Increase_SQL(t *testing.T) { t.Log("after:", v) } +func TestSysLocker_Increase_New_Key(t *testing.T) { + var key = "KEY" + types.String(time.Now().Unix()) + + var dao = NewSysLockerDAO() + value, err := dao.Read(nil, key) + if err != nil { + t.Fatal(err) + } + t.Log("before:", value) + for i := 0; i < 2; i++ { + v, err := dao.Increase(nil, key, 0) + if err != nil { + t.Log("err:", err) + return + } + t.Log("after:", v) + } +} + func TestSysLocker_Increase_Cache(t *testing.T) { var dao = NewSysLockerDAO() for i := 0; i < 11; i++ {