Delete

刪除行時減少所有列條目

  • December 31, 2014

我在包含 row_number 的表中有一個列,它是某種標識行的 ID 號。當我刪除一行時,我需要將其他行的 row_number 遞減,以保持它們的排序。最好的方法是什麼?我已經看到 auto_increment 不好,那我可以用什麼?以程式方式更新所有表條目對我來說聽起來很糟糕,不是嗎?

如果目標是能夠根據row_number然後對行進行排序,則不必費心在刪除時更新值。刪除一行後,這些行將以與之前相同的順序出現。努力彌補差距是不值得的。在最壞的情況下,如果您刪除編號最小的行,您將不得不在事務中更新表中剩餘的每一行,並使用鎖定和所有涉及的並發問題。不要這樣做。

如果您絕對必須向使用者提供一些視覺指示,那麼讓應用程序 UI 產生一個,或者在執行時使用類似ROW_NUMBER()的函式(SQL Server;其他 RDBMS 也有類似的)。

引用自:https://dba.stackexchange.com/questions/87301