自动迁移
使用 migrate 来维持你的表结构一直处于最新状态。
警告:migrate 仅支持创建表,没有的字段和没有索引。为了保护你的数据,它并不支持改变已有的字段类型或删除未被使用的字段
db.AutoMigrate(&User{}) db.AutoMigrate(&User{}, &Product{}, &Order{}) // 创建表的时候,添加表后缀 db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{})
其他数据库迁移工具
GORM 的数据库迁移工具能够支持主要的数据库,但是如果你要寻找更多的迁移工具, GORM 会提供的数据库接口,这可能可以给到你帮助。
// 返回 `*sql.DB` db.DB()
参考 通用接口 以获得更多详细说明
表结构的方法
Has Table
// 检查模型中 User 表是否存在 db.HasTable(&User{}) // 检查 users 表是否存在 db.HasTable("users")
Create Table
// 通过模型 User 创建表 db.CreateTable(&User{}) // 在创建 users 表的时候,会在 SQL 语句中拼接上 `"ENGINE=InnoDB"` db.Set("gorm:table_options", "ENGINE=InnoDB").CreateTable(&User{})
Drop table
// 删除模型 User 表 db.DropTable(&User{}) // 删除 users 表 db.DropTable("users") // 删除模型 User 表和 products 表 db.DropTableIfExists(&User{}, "products")
ModifyColumn
以给定的值来定义字段类型
// User 模型,改变 description 字段的数据类型为 `text` db.Model(&User{}).ModifyColumn("description", "text")
DropColumn
// User 模型,删除 description 字段 db.Model(&User{}).DropColumn("description")
Add Indexes
// 为 `name` 字段建立一个名叫 `idx_user_name` 的索引 db.Model(&User{}).AddIndex("idx_user_name", "name") // 为 `name`, `age` 字段建立一个名叫 `idx_user_name_age` 的索引 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")
Remove Index
// 移除索引 db.Model(&User{}).RemoveIndex("idx_user_name")
Add Foreign Key
// 添加主键 // 第一个参数 : 主键的字段 // 第二个参数 : 目标表的 ID // 第三个参数 : ONDELETE // 第四个参数 : ONUPDATE db.Model(&User{}).AddForeignKey("city_id", "cities(id)", "RESTRICT", "RESTRICT")
Remove ForeignKey
db.Model(&User{}).RemoveForeignKey("city_id", "cities(id)")
© 著作权归作者所有
举报
发表评论
0/200