Golang 使用 sql.NullString 替代 string 类型,避免空字符串引起的唯一索引报错

更新日期: 2021-11-26 阅读次数: 8937 字数: 132 分类: golang

例如:

用户表的用户名字段为可 Null 字段,但是如果在 golang struct 中定义为 string,则在保存时,不指定值,会默认存入空字符串。

正常情况下并没有什么影响,但是如果恰好这个字段上建了唯一索引。那么非 Null 值都必须保证唯一性。就会造成运行时异常了。

此时,需要将该字段定义为 sql.NullString

import (
	"database/sql"
)

type User struct {
	gorm.Model
	Name  sql.NullString
}

// 新建一个用户
models.DB.Where(models.User{Name: sql.NullString{String: “zhongwei”, Valid: true}}).FirstOrCreate(&user)

// 获取 Name 值
user.Name.String

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式