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 标签的 OnDelete、OnUpdate 选项设置外键约束,例如:
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. }
8. type CreditCard struct {
9. gorm.Model
10. Number string
11. UserID uint
12. }
14. type Company struct {
15. ID int
16. Name string
17. }
