2011-05-19 64 views
1

假設我有一個包含下列數據的表:插入Oracle數據庫表中的特定位置?

Name | Things 
------------- 
Foo | 5 
Bar | 3 
Baz | 8 

如果我想插入一行,使表的最終狀態是:

Name | Things 
------------- 
Foo | 5 
Qux | 6 
Bar | 3 
Baz | 8 

這可能嗎?

我知道我們通常不依賴表中行的順序,但我已經繼承了一些代碼,完全可以做到這一點。如果我可以插入一個位置,我可以避免重要的重構。

+0

你有代碼在Oracle表中的特定物理位置插入一行? – Tim 2011-05-19 19:57:05

回答

7

正如你所說,你不能依賴表中行的順序(沒有ORDER BY)。

無論如何,我可能會重構代碼 - 在將來的某個時刻有可能會突然沒有任何警告 - 現在在受控環境下現在更好地處理它嗎?

3

我會在表中添加一個FLOAT列,如果您想在該列中的值分別爲7.00000和8.000000的行之間插入一行,則新行的值將爲7.50000。如果你想在7.00000和7.50000之間插入一行,那麼新行將得到7.25000,依此類推。然後,當您按該欄順序排列時,按照所需的順序獲得欄。相當容易改造。但並不像人們喜歡的那樣健壯。您應該撤消表中的所有更新/插入權限並通過存儲過程處理I/O。