为了账号安全,请及时绑定邮箱和手机立即绑定

GO pg 防止默认值

GO pg 防止默认值

Go
青春有我 2022-11-23 15:59:39
结构样本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}}


查看完整回答
反对 回复 2022-11-23
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信