防止空(或数据库中的空字符串值)

del*_*lta 4 database go notnull go-gorm

我在 Go 应用中使用 PostgreSQL 和 GORM。

我认为使用 sql 选项卡sql:"not null"可以防止空条目,但是当 go 用字符串类型初始化结构时,它默认为空字符串,这与数据库中的空值不同。

我想知道是否有一种方法可以防止在结构定义中发生这种情况,这样我就不必在应用程序代码的所有级别都严格执行它。

Uma*_*yat 10

您可以通过using default: nullnot null约束一起解决防止''(空)字符串插入数据库的问题。因此,如果 Struct 字段值为空,它将被视为默认值null,gorm 将引发错误。

gorm:"unique;not null;type:varchar(100);default:null"

例子是:

type User struct {
    gorm.Model
    Email  string    `gorm:"unique;not null;type:varchar(100);default:null"`

}
Run Code Online (Sandbox Code Playgroud)

SO gorm for emptyUser.Email 会抛出错误。