gorm软删除,以及如何关闭


删除记录

警告:当删除一条记录的时候,你需要确定这条记录的主键有值,GORM会使用主键来删除这条记录。如果主键字段为空,GORM会删除模型中所有的记录。

// 删除一条存在的记录

db.Delete(&email)

DELETE from emails where id=10;

// 为删除 SQL 语句添加额外选项

db.Set("gorm:delete_option", "OPTION (OPTIMIZE FOR UNKNOWN)").Delete(&email)

DELETE from emails where id=10 OPTION (OPTIMIZE FOR UNKNOWN);

批量删除

删除所有匹配的记录

db.Where("email LIKE ?", "%jinzhu%").Delete(Email{})

DELETE from emails where email LIKE "%jinzhu%";

db.Delete(Email{}, "email LIKE ?", "%jinzhu%")

DELETE from emails where email LIKE "%jinzhu%";

软删除

如果模型中有 DeletedAt 字段,它将自动拥有软删除的能力!当执行删除操作时,数据并不会永久的从数据库中删除,而是将 DeletedAt 的值更新为当前时间。

db.Delete(&user)

UPDATE users SET deleted_at="2013-10-29 10:23" WHERE id = 111;

// 批量删除

db.Where("age = ?", 20).Delete(&User{})

UPDATE users SET deleted_at="2013-10-29 10:23" WHERE age = 20;

// 在查询记录时,软删除记录会被忽略

db.Where("age = 20").Find(&user)

SELECT * FROM users WHERE age = 20 AND deleted_at IS NULL;

// 使用 Unscoped 方法查找软删除记录

db.Unscoped().Where("age = 20").Find(&users)

SELECT * FROM users WHERE age = 20;

// 使用 Unscoped 方法永久删除记录

db.Unscoped().Delete(&order)

DELETE FROM orders WHERE id=10;
————————————————
版权声明:本文为CSDN博主「巩玺」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_29240343/article/details/111964804


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM