我试图用go中的orm执行操作插入。
我插入并没有为时间类型值赋值,如字段:
ReplyTime time.Time `orm:"index"`
它会抛出错误:NOT NULL constraint failed: topic.reply_time
。
那么如何将此值设置为可空或默认值?
type Topic struct {
Id int64
UId int64
Title string
Content string `orm:"size(5000)"`
Attachment string
Created time.Time `orm:"index"`
Updated time.Time `orm:"index"`
Views int64 `orm:"index"`
Author string
ReplyTime time.Time `orm:"index"`
ReplyCount int64
ReplyLastUserId int64
}
func AddTopic(title, content string) error {
o := orm.NewOrm()
t := time.Now()
topic := &Topic{Title:title, Content:content, Created:t, Updated:t}
_, err := o.Insert(topic)
return err
}
答案 0 :(得分:0)
那么如何将此值设置为可空或默认值?
你可以:
not null
约束,并将类型更改为接受空值的内容。 Go包含标准库中的一些(例如sql.Null*
),但time.Time
没有。自己编写或使用类似github.com/guregu/null
的内容,这会增加对此的支持。ReplyTime
字段插入数据库之前始终设置该字段。" best"解决方案取决于您的应用程序以及此数据表示的内容。 ReplyTime
在逻辑上是否可以拥有"没有价值" (例如用户从未回复过)?如果是,则使用选项1.如果它应始终具有值,则使用选项2.