日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame鏈?zhǔn)讲僮?更新刪除

為安全性保證、防止誤操作,?Update?及?Delete?方法必須帶有?Where?條件才能提交執(zhí)行,否則將會錯(cuò)誤返回,錯(cuò)誤信息如:?there should be WHERE condition statement for XXX operation?。?GOframe?是一款用于企業(yè)生產(chǎn)級別的框架,各個(gè)模塊設(shè)計(jì)嚴(yán)謹(jǐn),工程實(shí)踐的細(xì)節(jié)處理得比較好。

10年積累的網(wǎng)站建設(shè)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有杞縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

Update更新方法

?Update?用于數(shù)據(jù)的更新,往往需要結(jié)合?Data?及?Where?方法共同使用。?Data?方法用于指定需要更新的數(shù)據(jù),?Where?方法用于指定更新的條件范圍。同時(shí),?Update?方法也支持直接給定數(shù)據(jù)和條件參數(shù)。

使用示例:

// UPDATE `user` SET `name`='john guo' WHERE name='john'
g.Model("user").Data(g.Map{"name" : "john guo"}).Where("name", "john").Update()
g.Model("user").Data("name='john guo'").Where("name", "john").Update()
// UPDATE `user` SET `status`=1 ORDER BY `login_time` asc LIMIT 10
g.Model("user").Data("status", 1).Order("login_time asc").Limit(10).Update()

// UPDATE `user` SET `status`=1 WHERE 1
g.Model("user").Data("status=1").Where(1).Update()
g.Model("user").Data("status", 1).Where(1).Update()
g.Model("user").Data(g.Map{"status" : 1}).Where(1).Update()

也可以直接給?Update?方法傳遞?data?及?where?參數(shù):

// UPDATE `user` SET `name`='john guo' WHERE name='john'
g.Model("user").Update(g.Map{"name" : "john guo"}, "name", "john")
g.Model("user").Update("name='john guo'", "name", "john")

// UPDATE `user` SET `status`=1 WHERE 1
g.Model("user").Update("status=1", 1)
g.Model("user").Update(g.Map{"status" : 1}, 1)

Counter更新特性

可以使用?Counter?類型參數(shù)對特定的字段進(jìn)行數(shù)值操作,例如:增加、減少操作。

?Counter?數(shù)據(jù)結(jié)構(gòu)定義:

// Counter  is the type for update count.
type Counter struct {
	Field string
	Value float64
}

?Counter?使用示例,字段自增:

updateData := g.Map{
	"views": &gdb.Counter{ 
        Field: "views", 
        Value: 1,
    },
}
// UPDATE `article` SET `views`=`views`+1 WHERE `id`=1
result, err := db.Update("article", updateData, "id", 1)

?Counter?也可以實(shí)現(xiàn)非自身字段的自增,例如:

updateData := g.Map{
	"views": &gdb.Counter{ 
        Field: "clicks", 
        Value: 1,
    },
}
// UPDATE `article` SET `views`=`clicks`+1 WHERE `id`=1
result, err := db.Update("article", updateData, "id", 1)

Increment/Decrement自增/減

我們可以通過?Increment?和?Decrement?方法實(shí)現(xiàn)對指定字段的自增/自減常用操作。兩個(gè)方法的定義如下:

// Increment increments a column's value by a given amount.
func (m *Model) Increment(column string, amount float64) (sql.Result, error)

// Decrement decrements a column's value by a given amount.
func (m *Model) Decrement(column string, amount float64) (sql.Result, error)

使用示例:

// UPDATE `article` SET `views`=`views`+10000 WHERE `id`=1
g.Model("article").Where("id", 1).Increment("views", 10000)
// UPDATE `article` SET `views`=`views`-10000 WHERE `id`=1
g.Model("article").Where("id", 1).Decrement("views", 10000)

RawSQL語句嵌入

?gdb.Raw?是字符串類型,該類型的參數(shù)將會直接作為?SQL?片段嵌入到提交到底層的?SQL?語句中,不會被自動轉(zhuǎn)換為字符串參數(shù)類型、也不會被當(dāng)做預(yù)處理參數(shù)。例如:

// UPDATE `user` SET login_count='login_count+1',update_time='now()' WHERE id=1
g.Model("user").Data(g.Map{
    "login_count": "login_count+1",
    "update_time": "now()",
}).Where("id", 1).Update()
// 執(zhí)行報(bào)錯(cuò):Error Code: 1136. Column count doesn't match value count at row 1

使用?gdb.Raw?改造后:

// UPDATE `user` SET login_count=login_count+1,update_time=now() WHERE id=1
g.Model("user").Data(g.Map{
    "login_count": gdb.Raw("login_count+1"),
    "update_time": gdb.Raw("now()"),
}).Where("id", 1).Update()

Delete刪除方法

?Delete?方法用于數(shù)據(jù)的刪除。

使用示例:

// DELETE FROM `user` WHERE uid=10
g.Model("user").Where("uid", 10).Delete()
// DELETE FROM `user` ORDER BY `login_time` asc LIMIT 10
g.Model("user").Order("login_time asc").Limit(10).Delete()

也可以直接給?Delete?方法傳遞?where?參數(shù):

// DELETE FROM `user` WHERE `uid`=10
g.Model("user").Delete("uid", 10)
// DELETE FROM `user` WHERE `score`<60
g.Model("user").Delete("score < ", 60)

分享題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame鏈?zhǔn)讲僮?更新刪除
文章URL:http://www.dlmjj.cn/article/coicjcs.html