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

文章目录

    例如:

    用户表的用户名字段为可 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式