亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號