前言:
以下标记和使用方法经过测试可用
使用自动迁移+标记修改索引名或者删除索引是不会成功的
uniqueIndex可以指定索引名unique不可以指定索引名默认为字段名,两者都是唯一索引,,index可以指定索引名
可以使用自动迁移+标记给已存在的字段添加index索引
不可以使用自动迁移+标记给已存在的字段添加unique或者uniqueIndex
可以使用自动迁移+标记给不存在的(新建)字段添加Unique,index索引 但是不能添加uniqueIndex索引
uniqueIndex也不能在表不存在的情况下自动迁移的时候通过标记建立
Name string `gorm:”index:idx_name”`
//改为
Name string `gorm:”index:idx_name1”`
//不成功
想要实现如上需求,可以使用jinzhu gorm的addUniqueindex方法和removeIndex方法先删除再添加索引
一、结构体标签规则:
1、在结构体后 添加gorm:””
在””内添加标签内容即可
2、多个标签添加 : 在””内使用;号进行隔开即可添加多个标记如:
`gorm:"type:varchar(20);not null;comment:'这是一个说明'" josn:"test"`
二、标签总结
1、PRIMARY_KEY
//使用方法
`gore:”primary_key”`
//效果:将改列设置为主键
2、Column
//使用方法
`gorm:”column:name”`
//效果:数据库列名指定为name 特别说明:当修改结构体中column的名字时,如果修改的列数据库中没有,调用迁移的时候将创建新列
3、Type
//使用方法
`gorm:”type:varchar(20)”`
//效果:将对应数据中的列类型改为type标签指定的类型
4、Default
//使用方法。
`gorm:"default:’测试‘`
`gorm:"default:0"`
//效果将字段的默认值改为。测试/0
5、NOT NULL.
//使用方法
`gorm:”not null”`
//效果 将字段设置为不能为空
6、index
Name int `gorm:"index:idx_name"`
//效果:为name字段创建 名为idx_name的索引
7、uniqueIndex
注意:貌似没什么用测试没有成功建立,表第一次创建也没有成功不知道是不是我数据库问题
//注意只有在表不存在的时候建表时生效
Name int `gorm:"uniqueIndex:idx_unq_name"`
//为Name字段创建名为idx_unq_name的唯一索引,
Name1 int `gorm:"uniqueIndex:unq_name"`
Name2 int `gorm:"uniqueIndex:unq_name"`
为字段Name1 Name2创建联合唯一索引
8、unique
Test4 string `gorm:"unique"`
//给test4 添加跟test4名字一样的索引
9、Size
Name string `gorm:"Size:20"`
//字段Name的长度设置为20
10、Comment
Name int `gorm:"comment:'这是一个说明'"`
//为字段name 添加说明
autoCreateTime/autoUpdateTime
数据建立时候有用,nano纳秒,milli毫秒
其他不常用的参考gorm官方文档模型定义
T1 time.Time `gorm:"autoCreateTime:nano"`
T2 time.Time `gorm:"autoUpdateTime:milli"`
T3 time.Time `gorm:"autoCreateTime"`