SQL Server表中的列:ID(PK,自動遞增),ORDERNUMBER,Col1中,col2的 ..SQL Server自定義排序記錄表,允許刪除記錄與自定義排序
默認情況下,插入觸發器將建議的here中的值從ID複製到OrderNumber。 使用一些可視化界面,用戶可以通過遞增或遞減OrderNumber值來對記錄進行排序。
然而,如何處理被記錄在此期間刪除?
示例: 假設您添加具有PK ID的記錄:1,2,3,4,5 - OrderNumber接收相同的值。然後刪除ID = 4,ID = 5的記錄。下一條記錄將具有ID = 6,並且OrderNumber將收到相同的值。 跨度爲2的OrderNumbers將強制用戶減少ID = 6的記錄,如3次,以更改其訂單(即按下3x按鈕)。
另一種方法是,可以將select count(*) from table
插入到OrderNumber中,但是當刪除一些舊行時,它允許在表中有幾個相似的值。
如果不刪除記錄,但只有「取消」他們,他們仍然包含在排序順序,只爲用戶不可見的。目前,需要Java解決方案,但我認爲問題是語言無關的。
是否有這個更好的辦法?
我意識到這可能聽起來毫不相關,但您現在執行的訂單改變如何?你在談論多次遞減'OrderNumber'值的必要性,而不是一次。但是,如果您只需要將其減少一次,那將如何工作?當然,你還需要在另一行增加* OrderNumber(可能是'OrderNumber = 5'的那個),對嗎?那是你怎麼做的?如果是這樣,*你在SQL中還是在應用程序中執行此操作?如果在SQL中,你能顯示腳本嗎? –
@AndriyM在檢查(在java servlet中)如果該行不是第一個或最後一個,我正在運行兩個SQL UPDATE查詢來切換這2個元素的OrderNumber。所以,現在,這只是一個元素的轉變。我猜如果我要將元素移動幾個地方,我需要在起點和終點之間更新所有的OrderNumbers。 – yosh