在SQL Server 2005 中產生自動增量ID,無需ORDER BY
自動增量時需要將資料從一個表插入到另一個表中非身分列可能是一個挑戰。標準方法涉及使用遊標或建立表變量,但這些可能效率低。
如果沒有合法的 ORDER BY 字段,可以使用 ROW_NUMBER 函數。但是,缺乏顯式排序並不能保證原始資料順序的保留。這是因為「未排序」與「保留原始順序」不同。
要解決此問題,解決方案包括避免明確排序,如下所示:
此方法計算 Max ID 並在獲取鎖定時插入資料以避免並發錯誤。
但是,請注意,強烈建議使用識別列,因為它消除了鎖定和插入的需要確保最佳並發性。識別列為 SQL Server 中的自動遞增 ID 提供了更有效率、更強大的解決方案。
以上是如何在 SQL Server 2005 中自動遞增非識別列而不使用 ORDER BY?的詳細內容。更多資訊請關注PHP中文網其他相關文章!