高级主题

约束

qianmoQqianmoQ· 更新于 2026-09-23· 阅读 3 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

GORM 允许通过 tag 创建数据库约束,约束会在 AutoMigrate 或使用 GORM 的 CreateTable 时被创建。

CHECK 约束

使用 check tag 创建 CHECK 约束:

type UserIndex struct {
  Name  string `gorm:"check:name_checker,name <> 'jinzhu'"`
  Name2 string `gorm:"check:name <> 'jinzhu'"`
  Name3 string `gorm:"check:,name <> 'jinzhu'"`
}

索引约束

请查阅 数据库索引

外键约束

GORM 会为关联关系创建外键约束,你可以在初始化时禁用该功能:

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
  DisableForeignKeyConstraintWhenMigrating: true,
})

GORM 允许你通过 constraint tag 设置 FOREIGN KEY 约束的 OnDelete、OnUpdate 选项,例如:

type User struct {
  gorm.Model
  CompanyID  int
  Company    Company    `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
  CreditCard CreditCard `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
}

type CreditCard struct {
  gorm.Model
  Number string
  UserID uint
}

type Company struct {
  ID   int
  Name string
}

GitHub tag (latest SemVer)

评论

登录后参与评论

正在加载评论…