MySql-gorm 标签的使用和 自动维护表结构的设计

前言:
以下标记和使用方法经过测试可用
使用自动迁移+标记修改索引名或者删除索引是不会成功的
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"`
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值