猿问

如何使用 Gorm 向现有列添加默认值

我正在使用 gorm 并有一个像这样的模型:


type MyModel struct {

    CreationTime      time.Time 

    UpdateTime        time.Time

}

在部署我的数据库后,我意识到创建时间和更新时间并没有增加创建和更新项目的时间!我试图通过将模型更新为以下内容来解决此问题:


type MyModel struct {

    CreationTime      time.Time       `gorm:"default:current_timestamp"`

    UpdateTime        time.Time       `gorm:"default:current_timestamp ON update current_timestamp"`

}

但是,像下面这样的自动迁移不会将这些默认值应用于已经存在的表!


 db.AutoMigrate(&MyModel{})

有什么方法可以使用内置的迁移功能将默认值添加到列?我搜索了文档,似乎我只能更改现有列的类型!如果没有,关于为什么通过迁移简单地将默认值添加到列的任何建议?


神不在的星期二
浏览 387回答 2
2回答

HUX布斯

你试过sql标签吗?`sql:"DEFAULT:current_timestamp"`

莫回无

gorm 提供的自动迁移不会删除或修改您的列,并且有充分的理由,它是不安全的。我有一个类似的问题。我需要从我的一列中删除空约束,但在 gorm 中找不到任何可以做到这一点的东西,而且我很确定它不会。我为此编写了自己的函数。您可以轻松地做类似的事情。请看一下这两个提交:this和this。您基本上可以这样做是为接口定义一个方法,然后为该类型(和类型,如果需要)Dialect编写该方法的实现。commonDialectpostgres希望这可以帮助。如果您在实施方面遇到任何问题或有任何疑问,请随时问我。
随时随地看视频慕课网APP

相关分类

Go
我要回答