約束

GORM 允許使用標籤建立資料庫約束,當使用 GORM 自動遷移或建立資料表 時,將會建立約束。

CHECK 約束

使用 check 標籤建立 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 標籤設定 FOREIGN KEY 約束的 OnDeleteOnUpdate 選項,例如

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
}

白金贊助商

金牌贊助商

白金贊助商

金牌贊助商