tinyeyes Asked: 2014-12-31 19:48:28 +0800 CST2014-12-31 19:48:28 +0800 CST 2014-12-31 19:48:28 +0800 CST 删除行时减少所有列条目 772 我在包含 row_number 的表中有一列,某种标识行的 ID 号。当我删除一行时,我需要其他行的 row_number 递减,以保持排序。最好的方法是什么?我看到 auto_increment 不好用,那有什么用呢?以编程方式更新所有表条目对我来说听起来很糟糕,不是吗? delete row 1 个回答 Voted Best Answer Michael Green 2014-12-31T20:53:01+08:002014-12-31T20:53:01+08:00 如果目标是能够根据以下内容对行进行排序,row_number则不必费心在删除时更新值。删除行后,行将以与之前相同的顺序出现。弥补差距是不值得的。在最坏的情况下,如果删除编号最小的行,则必须在事务中更新表中剩余的每一行,并使用锁定和涉及的所有并发问题。不要这样做。 如果您绝对必须向用户提供一些视觉指示,那么让应用程序 UI 生成一个,或者在运行时使用ROW_NUMBER()之类的函数(SQL Server;其他 RDBMS 具有类似的功能)。
如果目标是能够根据以下内容对行进行排序,
row_number
则不必费心在删除时更新值。删除行后,行将以与之前相同的顺序出现。弥补差距是不值得的。在最坏的情况下,如果删除编号最小的行,则必须在事务中更新表中剩余的每一行,并使用锁定和涉及的所有并发问题。不要这样做。如果您绝对必须向用户提供一些视觉指示,那么让应用程序 UI 生成一个,或者在运行时使用ROW_NUMBER()之类的函数(SQL Server;其他 RDBMS 具有类似的功能)。