Your issue may already be reported! Please search on the issue track before creating one.
What version of Go are you using (go version)?
go version go1.13.1 linux/amd64
Which database and its version are you using?
mysql5.7
Please provide a complete runnable program to reproduce your issue. IMPORTANT
Need to runnable with GORM's docker compose config or please provides your config.
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mssql"
_ "github.com/jinzhu/gorm/dialects/mysql"
_ "github.com/jinzhu/gorm/dialects/postgres"
_ "github.com/jinzhu/gorm/dialects/sqlite"
)
var db *gorm.DB
func init() {
var err error
db, err = gorm.Open("sqlite3", "test.db")
// db, err = gorm.Open("postgres", "user=gorm password=gorm DB.name=gorm port=9920 sslmode=disable")
// db, err = gorm.Open("mysql", "gorm:gorm@tcp(localhost:9910)/gorm?charset=utf8&parseTime=True")
// db, err = gorm.Open("mssql", "sqlserver://gorm:LoremIpsum86@localhost:9930?database=gorm")
if err != nil {
panic(err)
}
db.LogMode(true)
}
func main() {
exp := gorm.Expr("sort + 1")
if err = db.Model(&model.Test{}).Where("id = ?", 1).Update("sort", exp).Error; err != nil {
logger.Error(err)
return
}
}
for some operations, I don't want to update "updated_at" field, is it possible?
The sql quest above is :
UPDATE `test` SET `sort` = sort + 1, `updated_at` = '2019-12-11 17:08:59' WHERE (id = 1)
what I want is:
UPDATE `test` SET `sort` = sort + 1 WHERE (id = 1)
Comment From: lil5
For those who haven't found it:
https://gorm.io/docs/update.html#Without-Hooks-x2F-Time-Tracking
u := User{
ID: 111,
Name: "hello",
Age: 18,
}
db.Save(&u)
// UPDATE users SET name='hello', age=18, updated_at='2013-11-17 21:34:10' WHERE id=111;
db.Model(&u).UpdateColumns(&u)
// UPDATE users SET name='hello', age=18 WHERE id = 111;