Skip to content
On this page

Delete

删除单条

  • 删除一条记录时,删除对象需要指定主键,否则会触发批量删除
Go
singleD := Teacher{ID: 2}
DB.Delete(&singleD)
// DELETE FROM `teachers` WHERE `teachers`.`id` = 2

singleD := Teacher{ID: 2}
DB.Where("age >= ?", 80).Delete(singleD)
// DELETE FROM `teachers` WHERE age >= 80 AND `teachers`.`id` = 2

根据主键删除

  • GORM允许通过内联条件指定主键来检索对象,但只支持整型数值,因为string可能导致SQL注入
Go
DB.Delete(&Teacher{}, "10")
// DELETE FROM `teachers` WHERE `teachers`.`id` = '10'

DB.Delete(&Teacher{}, []int{20, 22, 26, 28})
// DELETE FROM `teachers` WHERE `teachers`.`id` IN (20,22,26,28)

批量删除

  • 如果指定的条件不包括主键,那么会执行批量删除,将会删除所有匹配的记录
Go
DB.Where("name LIKE ?", "元%").Delete(&Teacher{})
// DELETE FROM `teachers` WHERE name LIKE '元%'

DB.Delete(&Teacher{}, "name LIKE ?", "元%")
// DELETE FROM `teachers` WHERE name LIKE '元%'