自动迁移
自动迁移仅仅会创建表,缺少列和索引,并且不会改变现有列的类型或删除未使用的列以保护数据。
db.AutoMigrate(&User{}) //创建表 User
db.AutoMigrate(&User{},&Product{},&Order{}) //创建表User Product Order
检查表是否存在
//检查模型User表是否存在
db.HasTable(&User{})
//检查表users是否存在
db.HasTable(“users”)
创建表
//为模型User创建表
db.CreateTable(&User{})
删除表
//删除模型User的表
db.DropTable(&User{})
//删除表users
db.DropTable(“users”)
//删除模型 User的表和表products
db.DropTableIfExists(&User{},“products”)
修改列
修改列的类型为给定值
// 修改模型User
的description列的数据类型为text
db.Model(&User{}).ModifyColumn(“description”, “text”)
删除列
// 添加主键
// 1st param : 外键字段
// 2nd param : 外键表(字段)
// 3rd param : ONDELETE
// 4th param : ONUPDATE
db.Model(&User{}).AddForeignKey(“city_id”, “cities(id)”, “RESTRICT”, “RESTRICT”)
索引
// 为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”)
// 删除索引
db.Model(&User{}).RemoveIndex(“idx_user_name”)