squirrel icon indicating copy to clipboard operation
squirrel copied to clipboard

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

Open cmfunc opened this issue 1 year ago • 1 comments

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

cmfunc avatar Mar 14 '23 03:03 cmfunc

Try:

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

lann avatar Mar 14 '23 15:03 lann