Gorm-通过迁移升级列约束

Gorm-通过迁移升级列约束

问题描述:

How do you perform a Migration with gorm? For example, I need to add a constraint to a column. I changed my model (simplified example below), but the AutoMigrate method, according to the docs, will not change column's constraints.

How do you achieve it then? I cannot find anything useful in the docs

Starting model:

type User struct {
    gorm.Model
    Name     string
}

I would like to update it like this:

type User struct {
    gorm.Model
    Name     string   `gorm:"not null"`
}

如何使用gorm执行迁移? 例如,我需要向列添加约束。 我更改了模型(下面是简化的示例),但是根据文档,AutoMigrate方法不会更改列的约束。 p>

那您如何实现呢? 我找不到文档中有用的任何东西 p>

初始模型: p>

  type用户结构{
 gorm.Model 
名称字符串\  n} 
  code>  pre> 
 
 

我要这样更新: p>

  type用户struct {
 gorm。 型号
名称字符串`gorm:“ not null”`
} 
  code>  pre> 
  div>

When adding a not null constraint, then a default value will also need to be added for when the existing records do not meet the new criteria. The definition could be something like:

type User struct {
    gorm.Model
    Name     string   `gorm:"not null;default:'fillertext'"`
}

As @putu said, ALTER TABLE will certainly work, but you would still need to add a default value initially to ensure the non-comforming rows meet the new requirements. Once this has been done you can remove the default value if you desire and the migration will work as intended from that point on.