Golang GORM 单表删除数据 delete

删除模型数据一般用于删除之前查询出来的模型变量绑定的记录。删除只有一个操作,delete,也是先找到再去删除。 可以删除单条记录,也可以删除多条记录。

 单纯delete语句进行删除


Gorm 删除数据的语法:

db.Delete(模型变量)

	var s Student
	db.Debug().Delete(&s, "age = ?", 100)
	fmt.Println(s)

[15.878ms] [rows:1] DELETE FROM `student` WHERE age = 100
	var s Student
	db.Debug().Take(&s, "age = ?", 101)
	db.Debug().Delete(&s)

[2.060ms] [rows:1] SELECT * FROM `student` WHERE age = 101 LIMIT 1

[4.494ms] [rows:1] DELETE FROM `student` WHERE `student`.`id` = 1  

Gorm 删除数据的范例:

food := Food{}
// 先查询一条记录, 保存在模型变量 food
// 等价于: SELECT * FROM `foods`  WHERE (id = '2') LIMIT 1
db.Where("id = ?", 2).Take(&food)

// 删除 food 对应的记录,通过主键 Id 标识记录
// 等价于: DELETE from `foods` where id=2;
db.Delete(&food)

批量删除
删除所有匹配记录

db.Where("email LIKE ?", "%jinzhu%").Delete(Email{})
 DELETE from emails where email LIKE "%jinhu%";

db.Delete(Email{}, "email LIKE ?", "%jinzhu%")
 DELETE from emails where email LIKE "%jinhu%";

 delete + Where 条件删除数据


Gorm 条件删除数据的语法:

db.Where(条件表达式).Delete(空模型变量指针)

Gorm 条件删除数据的范例:

// 等价于:DELETE from `foods` where (`type` = 5);
db.Where("type = ?", 5).Delete(&Food{})

提示:这里Delete函数需要传递一个空的模型变量指针,主要用于获取模型变量绑定的表名, 不能传递一个非空的模型变量。

删除


警告:删除记录时,需要确保其主要字段具有值,GORM将使用主键删除记录,如果主要字段为空,GORM将删除模型的所有记录

// 删除存在的记录
db.Delete(&email)
 DELETE from emails where id=10;

// 为Delete语句添加额外的SQL选项
db.Set("gorm:delete_option", "OPTION (OPTIMIZE FOR UNKNOWN)").Delete(&email)
 DELETE from emails where id=10 OPTION (OPTIMIZE FOR UNKNOWN);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值