结构样本type Car struct { ID uint64 Required bool `pg:"required,notnull"` Name string `pg:"name"` }移民:BEGIN;ALTER TABLE cars ADD COLUMN required BOOLEAN NOT NULL DEFAULT true;END;当我创建汽车结构时:car = Car{Name:"Name",Required:false}当我试图通过写来添加一些新车时:_, err = r.db.Model(&car).Insert()SQL 查询看起来像这样:INSERT INTO "cars" ("id", "name", "required") VALUES (DEFAULT, "Name", DEFAULT)car 的主要问题是 required 字段设置为 false,但是当我插入它时 - 它更改为 DEFAULT (true)。
1 回答
函数式编程
TA贡献1807条经验 获得超9个赞
因为该值false将被读取为空值。因为空值您的数据将更改为默认值 (TRUE)
您必须将结构更改为这样
type Car struct {
ID uint64
Required *bool `pg:"required,notnull,default:true"`
Name string `pg:"name"`
}
并像这样定义结构
required := false
car = Car{Name:"Name", Required: &required}
或者您也可以sql.NullBool在结构中使用数据类型
type Car struct {
ID uint64
Required sql.NullBool `pg:"required,notnull,default:true"`
Name string `pg:"name"`
}
car = Car{Name:"Name", Required: sql.NullBool{Bool: false, Valid: true}}
- 1 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消