首页 > 解决方案 > 复合唯一键的 Gorm 标签

问题描述

如何描述复合 UNIQUE 键的 gorm 标签?

Postgres:

phone_country_code VARCHAR(10), 
phone_number VARCHAR(25),
CONSTRAINT phone_country_code_number UNIQUE (phone_country_code, phone_number)

Go(模型结构的字段):

PhoneCountryCode       string    `gorm:"column:phone_country_code; type:VARCHAR(10)"`
PhoneNumber            string    `gorm:"column:phone_number; type:VARCHAR(25)"`

标签: postgresqlgogo-gorm

解决方案


根据复合索引上的文档,您可以通过在两个或多个字段中使用相同的索引名称来创建唯一的复合索引:

PhoneCountryCode       string    `gorm:"uniqueIndex:idx_code_phone; type:VARCHAR(10)"`
PhoneNumber            string    `gorm:"uniqueIndex:idx_code_phone; type:VARCHAR(25)"`

这将与添加约束具有相同的效果。

(注意:为了便于阅读,我删除了column标签,因为 gorm snake 默认情况下将字段名称设置为获取列名称,所以不需要它)。


推荐阅读