制約

GORMでは、タグを使ってデータベース制約を作成できます。制約はAutoMigrateまたはGORMでのCreateTable時に作成されます。

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タグを使って、外部キー制約の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
}

プラチナスポンサー

ゴールドスポンサー

プラチナスポンサー

ゴールドスポンサー