package mysql
import (
"fmt"
"testing"
"time"
)
type Like struct {
ID int `gorm:"ID,primary_key"`
Ip string `gorm:"IP,type:varchar(20);not null;index:ip_idx"`
UserName string `gorm:"USER_NAME,type:varchar(256);not null;"`
Title string `gorm:"TITLE,type:varchar(128);not null"`
CreatedAt time.Time `gorm:"CREATED_AT"`
}
type base struct{}
func (Like) TableName() string {
return "like"
}
func createTableGorm() {
// 创建表
db := sqlLocalClient()
db.Migrator().CreateTable(&Like{})
}
func TestCreateTable(t *testing.T) {
createTableGorm()
}
执行SQL结果:
根据结构体创建出来的数据库表如图:
func dropColumn() {
db := sqlLocalClient()
// 删除字段 ip
db.Migrator().DropColumn(&Like{}, "ip")
}
执行SQL结果:
数据库表的ip字段已删除
func renameColumn() {
db := sqlLocalClient()
// 修改字段名称
db.Migrator().RenameColumn(&Like{}, "user_name", "name")
}
执行SQL结果:
修改后的数据库表:
func hasColumn() {
db := sqlLocalClient()
// 检查字段是否存在
user_name := db.Migrator().HasColumn(&Like{}, "user_name")
name := db.Migrator().HasColumn(&Like{}, "name")
fmt.Printf("user_name: %+v,name:%+v\n", user_name, name)
}
执行SQL结果:
func hasTable() {
db := sqlLocalClient()
// 检查表是否存在
like := db.Migrator().HasTable(&Like{})
base := db.Migrator().HasTable(&base{})
fmt.Printf("like: %+v \t base: %+v\n", like, base)
}
执行SQL结果:
func renameTable() {
db := sqlLocalClient()
// 修改表名
db.Migrator().RenameTable("like", "info")
}
执行SQL结果:
func deleteTable() {
db := sqlLocalClient()
// 删除表
db.Migrator().DropTable(&Like{})
}
在删之前需要把表名在改回like
执行SQL结果:
这部分操作我们在工作中基本用不到,一般都不会给与我们权限的,可以作为了解
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。