# 約束
GORM 允許通過標簽創建數據庫約束,約束會在通過 GORM 進行 [AutoMigrate 或創建數據表](http://v2.gorm.io/zh_CN/docs/migration.html)時被創建。
## 檢查約束
通過 `check` 標簽創建檢查約束
```go
type UserIndex struct {
Name string `gorm:"check:name_checker,name <> 'jinzhu'"`
Name2 string `gorm:"check:name <> 'jinzhu'"`
Name3 string `gorm:"check:,name <> 'jinzhu'"`
}
```
## 索引約束
查看 [數據庫索引](http://v2.gorm.io/zh_CN/docs/indexes.html) 獲取詳情
## 外鍵約束
GORM 會為關聯創建外鍵約束,您可以在初始化過程中禁用此功能:
```go
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
DisableForeignKeyConstraintWhenMigrating: true,
})
```
GORM 允許您通過 `constraint` 標簽的 `Ondelete`、`Ondelete` 選項設置外鍵約束,例如:
```go
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
}
```