簡體   English   中英

在oracle 10g中添加自動增量和自動減量列

[英]Add auto increment and auto decrement column in oracle 10g

我想在oracle數據庫中添加一個列,該列在插入記錄后自動遞增。刪除記錄時應該自動遞減。該字段用於存儲表標題的序列號,標題應該能夠重新生成因此,數字序列之間不應該有任何差距。我嘗試過TRIGGER和SEQUENCE但它沒有用。有沒有辦法使用PL / SQL來實現。實際上我想要的是移動序列號刪除記錄時

例如:第1行,第2行,第3行,第4行,第5行,如果我們刪除第3行,則序列應該是第1行,第2行,第3行,第4行和第4行的記錄應該是第3行所以上..

我正在使用jsp-servlet技術。如果有任何方法可以通過使用java來做到這一點也很好。

謝謝!

沒有; 沒有簡單的方法。

無論你如何使用序列,它們都不會產生無間隙的數字序列 ,完美的1,2 ... n 即使他們這樣做,也無法自動為整個表或表中的行集重新生成序列,而無需從頭開始重新生成它。 簡單地說,如果刪除第3行,則需要更新序列號大於3的所有記錄。這顯然是荒謬的。

我不明白為什么要這樣做,但是,假設你做我的“答案”就是不要將這些信息存儲在你的表格中。 對於那些需要此列的查詢,使用分析函數row_number()即時生成它。 例如:

select column1, column2, row_number() over ( order by <whatever> ) as my_sequence
  from my_table

這將按照ORDER BY子句中給出的順序為每一行分配一個唯一編號。

您也可以將它放在視圖中,這樣您甚至不需要記住將它放在查詢中,並且您確定每次都以完全相同的方式生成它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM