如果您的模型包含乙個gorm.deletedat
字段(包含在 中gorm.model
),它將自動獲得軟刪除能力!
呼叫 時delete
,記錄不會從資料庫中刪除,但 gorm 會將deletedat
的值設定為當前時間,並且不再使用正常的 query 方法查詢資料。
// 使用者 id 為 `111`
db.delete(&user)
// 更新使用者 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;
查詢軟刪除記錄db.unscoped().where( "age = 20" ).find(&users)
// select * from users where age = 20;
db.unscoped().delete(&order)
// delete from orders where id=10;
如果程式中,使用了預設的gorm生成資料庫,使用了軟刪除,那麼在執行gorm的查詢結果中,被軟刪除的資料是不能被查詢到的;
但是,在資料庫工具中,使用軟刪除的資料,執行t-sql語句可以被查詢到,判斷的標誌是,deleted_at有時間(deleted_at is null;);就像乙個**站,我覺得可以使用軟刪除。
mysql軟刪除與硬刪除 軟刪除和硬刪除的處理方法
硬刪除 硬刪除就是傳統的物理刪除,直接將該記錄從資料庫中刪除。但是是人總會犯錯誤,在誤操作刪除了重要資料後,如果想要恢復該資料,需要鎖表再去訪問日誌檔案。這樣會造成大量的人力資源浪費,現在的開發不推介這種方式。軟刪除軟刪除又叫邏輯刪除,標記刪除,與我們常說的刪除不同,並不是真的從資料庫中將這條記錄去...
mysql軟刪除與硬刪除 軟刪除和硬刪除的處理方法
硬刪除 硬刪除就是傳統的物理刪除,直接將該記錄從資料庫中刪除。但是是人總會犯錯誤,在誤操作刪除了重要資料後,如果想要恢復該資料,需要鎖表再去訪問日誌檔案。這樣會造成大量的人力資源浪費,現在的開發不推介這種方式。軟刪除軟刪除又叫邏輯刪除,標記刪除,與我們常說的刪除不同,並不是真的從資料庫中將這條記錄去...
gorm軟刪除 GORM 中文文件 2 4 刪除
刪除記錄 警告 當刪除一條記錄的時候,你需要確定這條記錄的主鍵有值,gorm會使用主鍵來刪除這條記錄。如果主鍵欄位為空,gorm會刪除模型中所有的記錄。刪除一條存在的記錄 db.delete email delete from emails where id 10 為刪除 sql 語句新增額外選項 ...