結構樣本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 關注
- 135 瀏覽
添加回答
舉報
0/150
提交
取消