删除数据也是需要where条件的,否则是会执行失败的
方法一:
package mysql
import (
"fmt"
"testing"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
type Userinfo struct {
UserId uint32 `gorm:"column:USER_ID;PRIMARY_KEY"`
UserName string `gorm:"column:USER_NAME"`
LoginDate time.Time `gorm:"column:LOGIN_DATE"`
ClientVar string `gorm:"column:CLIENT_VER"`
}
func (Userinfo) TableName() string {
return "userinfo"
}
func deleteUserById() {
// 根据ID删除数据
db := sqlLocalClient()
ub := &Userinfo{}
err := db.First(&ub).Error // 根据主键排序查出一条数据
if err != nil {
panic(err)
}
fmt.Printf("userinfo: %+v", ub)
err = db.Model(&Userinfo{}).Delete("USER_ID = ?", ub.UserId).Error
if err != nil {
panic(err)
}
}
func TestDelete(t *testing.T) {
deleteUserById()
}
执行结果:
可以看到是先查询的一条数据,然后去删掉的,删数据的SQL里面是根据where 条件里面的user_id来删的数据。
方法二:
func deleteUserById() {
// 根据ID删除数据
db := sqlLocalClient()
ub := &Userinfo{}
err := db.First(&ub).Error // 根据主键排序查出一条数据
if err != nil {
panic(err)
}
fmt.Printf("userinfo: %+v", ub)
err = db.Model(&Userinfo{}).Delete("USER_ID = ?", ub.UserId).Error
if err != nil {
panic(err)
}
}
执行结果:
可以看出来,这两种执行的SQL语句是一样的,但是这两种想写法略有区别
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。