GORM 允许通过标签创建数据库约束,约束会在通过 GORM 进行 AutoMigrate 或创建数据表时被创建。

检查约束

通过 check 标签创建检查约束

  1. type UserIndex struct {
  2. Name string `gorm:"check:name_checker,name <> 'jinzhu'"`
  3. Name2 string `gorm:"check:name <> 'jinzhu'"`
  4. Name3 string `gorm:"check:,name <> 'jinzhu'"`
  5. }

索引约束

查看 数据库索引 获取详情

外键约束

GORM 会为关联创建外键约束,您可以在初始化过程中禁用此功能:

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

GORM 允许您通过 constraint 标签的 OnDeleteOnUpdate 选项设置外键约束,例如:

  1. type User struct {
  2. gorm.Model
  3. CompanyID int
  4. Company Company `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
  5. CreditCard CreditCard `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"`
  6. }
  7. type CreditCard struct {
  8. gorm.Model
  9. Number string
  10. UserID uint
  11. }
  12. type Company struct {
  13. ID int
  14. Name string
  15. }