Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 防止null(或数据库中的空字符串值)_Database_Go_Go Gorm_Notnull - Fatal编程技术网

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

Database 防止null(或数据库中的空字符串值),database,go,go-gorm,notnull,Database,Go,Go Gorm,Notnull,我在Go应用程序中使用PostgreSQL和GORM 我认为使用sql:“notnull”的sql选项卡可以防止空条目,但是当go使用字符串类型初始化结构时,它默认为空字符串,与db中的null不同 我想知道是否有一种方法可以防止在结构定义中发生这种情况,这样我就不必在应用程序代码的所有级别上严格执行它。您可以通过同时使用默认值:null和非null约束来解决防止将“”(空)字符串插入数据库的问题。因此,如果Strut字段值为空,它将被视为缺省值 null < /COD> > GORM将引发错误

我在Go应用程序中使用PostgreSQL和GORM

我认为使用
sql:“notnull”
的sql选项卡可以防止空条目,但是当go使用字符串类型初始化结构时,它默认为空字符串,与db中的null不同


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

您可以通过同时使用默认值:null和
非null
约束来解决防止将“”(空)字符串插入数据库的问题。因此,如果Strut字段值为空,它将被视为缺省值<代码> null < /COD> > GORM将引发错误。

gorm:“唯一;非空;类型:varchar(100);默认值:空”

例如:

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

}

因此,gorm for empty
User.Email
将抛出一个错误。

空字符串是字符串的“NOTNULL”版本,否?它不会为我强制执行。如果我手动访问数据库并尝试输入null字段,它会说它违反NOTNULL约束,但如果我输入“”,它会接受it@deltaskelta:这正是它应该做的。你的问题是什么?我问题的最后一行是我要问的。有没有一种方法可以防止空字符串在不通过应用程序代码严格执行的情况下有效?没有,在结构定义中没有方法指定某个特定值无效。