[英]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.