你可以使用 MySQL 的条件更新语法(Conditional Update Syntax),结合 Golang 中的参数绑定来实现这个需求。
具体实现步骤如下:
在 SQL 语句中使用条件更新语法,判断需要更新的字段是否等于特定值。
如果需要更新,则将目标字段赋值为当前时间。
在 Golang 中使用参数绑定,将需要更新的字段和其对应的特定值作为参数传递给 SQL 语句。
执行 SQL 语句,完成更新操作。
以下是一个示例代码片段:
import (
"database/sql"
"time"
_ "github.com/go-sql-driver/mysql"
)
func updateTable(db *sql.DB, targetCol string, targetVal interface{}, updateTimeCol string) error {
// 构造 SQL 语句,使用条件更新语法
sqlStmt := "UPDATE mytable SET " + updateTimeCol + " = NOW() WHERE " + targetCol + " = ?"
// 使用参数绑定,传递需要更新的字段和对应的特定值
_, err := db.Exec(sqlStmt, targetVal)
if err != nil {
return err
}
return nil
}
func main() {
// 连接数据库
db, err := sql.Open("mysql", "user:password@/dbname")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 更新表中 name 字段为 "John" 的记录的 update_time 字段为当前时间
err = updateTable(db, "name", "John", "update_time")
if err != nil {
panic(err.Error())
}
}
在上面的示例代码中,我们使用了 MySQL 中的 NOW()
函数获取当前时间,并将其赋值给需要更新的字段。同时,使用参数绑定来传递需要更新的字段和其对应的特定值,保证 SQL 语句的安全性和可重用性。