为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
神不在的星期二 2022-06-21 10:18:02
我正在使用 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{})有什么方法可以使用内置的迁移功能将默认值添加到列?我搜索了文档,似乎我只能更改现有列的类型!如果没有,关于为什么通过迁移简单地将默认值添加到列的任何建议?
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

你试过sql标签吗?

`sql:"DEFAULT:current_timestamp"`


查看完整回答
反对 回复 2022-06-21
?
莫回无

TA贡献1865条经验 获得超7个赞

gorm 提供的自动迁移不会删除或修改您的列,并且有充分的理由,它是不安全的。我有一个类似的问题。我需要从我的一列中删除空约束,但在 gorm 中找不到任何可以做到这一点的东西,而且我很确定它不会。我为此编写了自己的函数。您可以轻松地做类似的事情。

请看一下这两个提交:thisthis。您基本上可以这样做是为接口定义一个方法,然后为该类型(和类型,如果需要)Dialect编写该方法的实现。commonDialectpostgres

希望这可以帮助。如果您在实施方面遇到任何问题或有任何疑问,请随时问我。


查看完整回答
反对 回复 2022-06-21
  • 2 回答
  • 0 关注
  • 386 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信