GO pg 防止默认值

结构样本


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)。


青春有我
浏览 91回答 1
1回答

函数式编程

因为该值false将被读取为空值。因为空值您的数据将更改为默认值 (TRUE)您必须将结构更改为这样type Car struct {    ID       uint64    Required *bool  `pg:"required,notnull,default:true"`    Name     string `pg:"name"`}并像这样定义结构required := falsecar = 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}}
打开App,查看更多内容
随时随地看视频慕课网APP