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