自動マイグレーション
スキーマを最新に保つため、自動的に移行します。
警告:自動マイグレーションはテーブルや不足しているカラムとインデックスのみ生成します。データ保護のため、既存のカラム型の変更や未使用のカラムの削除はしません。
db.AutoMigrate(&User{})
db.AutoMigrate(&User{}, &Product{}, &Order{})
db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{})
|
その他マイグレーションツール
GORMの自動マイグレーションはほとんどの場合で、うまく機能します。しかし、よりしっかりしたマイグレーションツールを求める方のために、GORMは一般的なDBインターフェースも提供します。
Refer Generic Interface for more details.
スキーマメソッド
HasTable
db.HasTable(&User{})
db.HasTable("users")
|
CreateTable
db.CreateTable(&User{})
db.Set("gorm:table_options", "ENGINE=InnoDB").CreateTable(&User{})
|
DropTable
db.DropTable(&User{})
db.DropTable("users")
db.DropTableIfExists(&User{}, "products")
|
ModifyColumn
カラムの型を指定した値に変更します
db.Model(&User{}).ModifyColumn("description", "text")
|
DropColumn
db.Model(&User{}).DropColumn("description")
|
AddIndexes
db.Model(&User{}).AddIndex("idx_user_name", "name")
db.Model(&User{}).AddIndex("idx_user_name_age", "name", "age")
db.Model(&User{}).AddUniqueIndex("idx_user_name", "name")
db.Model(&User{}).AddUniqueIndex("idx_user_name_age", "name", "age")
|
RemoveIndex
db.Model(&User{}).RemoveIndex("idx_user_name")
|
AddForeignKey
db.Model(&User{}).AddForeignKey("city_id", "cities(id)", "RESTRICT", "RESTRICT")
|
RemoveForeignKey
db.Model(&User{}).RemoveForeignKey("city_id", "cities(id)")
|