主键ID也是索引的一种,所以索引的条款就是和id一样的
下面是唯一索引,插入时:无则插入,有则插不上;查询速度加快,插入速度变慢;
【如果要实现"有则更新,无则插入"的功能可以使用beego的readOrCteate函数,索引就是和主键ID一样,不会有其他作用】
索引:
插入一条索引相同时,不会插入和更新:
全代码:
func getLogsheetByFid(fid int64) (err error) {
yesterdayStart := time.Now().AddDate(0, 0, -1).Format("2006-01-02") + " 00:00:00"
yesterdayEnd := time.Now().AddDate(0, 0, -1).Format("2006-01-02") + " 23:59:59"
yesterday := time.Now().AddDate(0, 0, -1).Format("2006-01-02")
currentTime := time.Now().Format("2006-01-02 15:04:05")
o := orm.NewOrm()
logsheetQs := o.QueryTable("logsheet")
logsheetRecordQs := o.QueryTable("logsheet_record")
logsheetQs = logsheetQs.Filter("frequency_id", fid)
var l []models.Logsheet
if _, err = logsheetQs.Limit(123000).All(&l); err == nil {
for _, v := range l {
logsheetRecordQs = logsheetRecordQs.
Filter("logsheet_id", v.Id).
Filter("created_at__gte", yesterdayStart).
Filter("created_at__lte", yesterdayEnd)
var lr []models.LogsheetRecord
if nums, err := logsheetRecordQs.Limit(100000).All(&lr); err == nil {
if nums == 0 {
models.AddWarning(&models.Warning{v.Id, v.Name, v.Name + "缺少" + yesterday + "的更新", currentTime, 0, 0, "123", "123", "123"})
}
} else {
return err
}
}
return nil
} else {
return err
}
}
func AddWarning(m *Warning) (id int64, err error) {
o := orm.NewOrm()
id, err = o.Insert(m)
return
}