刪除記錄
警告:當刪除一條記錄的時候,你需要確定這條記錄的主鍵有值,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