Masterminds / squirrel

Fluent SQL generation for golang
Other
6.67k stars 458 forks source link

"update table set column1=column1+1", this sql would set column1=0 #353

Open cmfunc opened 1 year ago

cmfunc commented 1 year ago

squirrel

where:=map[string]interface{}{"column2":""}
setmap:=map[string]interface{}{"column1":"column1 + 1"}

// UpdateWorkProperties
func UpdateWorkProperties(ctx context.Context, runner sq.BaseRunner, where interface{}, setmap map[string]interface{}) error {
    logger.Info("UpdateItemNoStatus sq tosql=====================")
    logger.Info(sq.Update(tableWorkProperties).SetMap(setmap).Where(where).Limit(1).ToSql())
    logger.Info("UpdateItemNoStatus sq tosql======================")
    _, err := sq.Update(tableWorkProperties).
        SetMap(setmap).
        Where(where).
        Limit(1).
        RunWith(runner).
        ExecContext(ctx)
    return err
}

squirrel trans to sql string log

{"level":"info","msg":"UpdatePropertiesCurrentNo sq tosql=====================","time":"2023-03-14 11:20:49"}
{"level":"info","msg":"UPDATE property_origin SET item_no_current = ? WHERE work_id = ? LIMIT 1[item_no_current + 1 1123031318403700117600000108] \u003cnil\u003e","time":"2023-03-14 11:20:49"}
{"level":"info","msg":"UpdatePropertiesCurrentNo sq tosql======================","time":"2023-03-14 11:20:49"}

mysql table effect

item_no_current=0

lann commented 1 year ago

Try:

setmap := sq.Eq{"column1": sq.Expr("column1 + 1")}