後端工程師的基礎
不外乎資料的CRUD
但是在實際操作上
真正會delete的情況並不多
除了log以外
畢竟資料刪除後
要再找回來就麻煩了

如果要對資料做刪除
通常會使用一個欄位來註明
例如 is_delete

如果本來的table沒有這種欄位
又想要做刪除的時候該怎麼辦呢
其實還有一種軟刪除
就是把表的foreign key設為負數
來張圖比較明顯

soft-delete-1.png
這樣一來
Frank身上就只會剩下一張訂單了
後續要追蹤時
也可以查詢的到

除了資料的軟刪除
table或是store procedure也可以
說穿了不值錢
就是把table或是SP改名
加個前墜 deleted_之類的
讓程式讀取不到
但又保持在隨時可以roll back的狀態
等到確定沒問題後
再進行drop

這些應該是除了Where 1 = 1之外
最實用的sql黑魔法了