前言:
以下標記和使用方法經過測試可用
使用自動遷移+標記修改索引名或者刪除索引是不會成功的
uniqueIndex可以指定索引名unique不可以指定索引名預設為欄位名,兩者都是唯一索引,,index可以指定索引名
可以使用自動遷移+標記給已存在的欄位新增index索引
不可以使用自動遷移+標記給已存在的欄位新增unique或者uniqueIndex
可以使用自動遷移+標記給不存在的(新建)欄位新增Unique,index索引 但是不能新增uniqueIndex索引
uniqueIndex也不能在表不存在的情況下自動遷移的時候透過標記建立
1 2 3 4 | Name string `gorm:」index:idx_name」` //改為 Name string `gorm:」index:idx_name1」` //不成功 |
1 | 想要實現如上需求,可以使用jinzhu gorm的addUniqueindex方法和removeIndex方法先刪除再新增索引 |
一、結構體標籤規則:
1、在結構體後 新增
2、多個標籤新增 : 在」」內使用;號進行隔開即可新增多個標記如:
1 | `gorm:"type:varchar(20);not null;comment:'這是一個說明'" josn:"test"` |
二、標籤總結
1、PRIMARY_KEY
1 2 3 | //使用方法 `gore:」primary_key」` //效果:將改列設定為主鍵 |
2、Column
1 2 3 | //使用方法 `gorm:」column:name」` //效果:資料庫列名指定為name 特別說明:當修改結構體中column的名字時,如果修改的列資料庫中沒有,呼叫遷移的時候將建立新列 |
3、Type
1 2 3 | //使用方法 `gorm:」type:varchar(20)」` //效果:將對應資料中的列型別改為type標籤指定的型別 |
4、Default
1 2 3 4 | //使用方法。 `gorm:"default:』測試『` `gorm:"default:0"` //效果將欄位的預設值改為。測試/0 |
5、NOT NULL.
1 2 3 | //使用方法 `gorm:」not null」` //效果 將欄位設定為不能為空 |
6、index
1 2 | Name int `gorm:"index:idx_name"` //效果:為name欄位建立 名為idx_name的索引 |
7、uniqueIndex
注意:貌似沒什麼用測試沒有成功建立,表第一次建立也沒有成功不知道是不是我資料庫問題
1 2 3 4 5 6 7 | //注意衹有在表不存在的時候建表時生效 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
1 2 | Test4 string `gorm:"unique"` //給test4 新增跟test4名字一樣的索引 |
9、Size
1 2 | Name string `gorm:"Size:20"` //欄位Name的長度設定為20 |
10、Comment
1 2 | Name int `gorm:"comment:'這是一個說明'"` //為欄位name 新增說明 |
autoCreateTime/autoUpdateTime
資料建立時候有用,nano納秒,milli毫秒
其他不常用的參考gorm官方檔案模型定義
1 2 3 | T1 time.Time `gorm:"autoCreateTime:nano"` T2 time.Time `gorm:"autoUpdateTime:milli"` T3 time.Time `gorm:"autoCreateTime"` |