gpt4 book ai didi

java - oracle 10g增加自增自减列

转载 作者:行者123 更新时间:2023-11-29 05:55:19 25 4
gpt4 key购买 nike

我想在oracle数据库中添加一列,插入记录后自动递增。删除记录时应该自动递减。该字段用于存储表标题的序号,标题应该是能够重新排序,因此数字序列之间不应有任何间隙。我尝试使用 TRIGGER 和 SEQUENCE,但它没有用。有没有办法使用 PL/SQL 来解决这个问题。实际上我想要的是转移删除记录时的序号。

例如:第1行,第2行,第3行,第4行,第5行如果我们删除第3行,顺序应该是第1行,第2行,第3行,第4行,第4行的记录应该到第3等等..

我正在使用 jsp-servlet 技术。如果有任何方法可以通过使用 java 来做到这一点,那也很好。

谢谢!

最佳答案

没有;没有简单的方法。

无论您对序列做什么,它们都会 never generate a gap free sequence of numbers , 一个完美的 1, 2 .. n。即使他们这样做了,也没有办法自动为整个表或表中的一组行重新生成一个序列,而不是从头开始重新生成它。简单地说,如果删除第 3 行,则需要更新序列号大于 3 的所有记录。这显然很荒谬。

我不明白您为什么要这样做,但是,假设您这样做,我的“答案”是根本不将此信息存储在您的表中。对于那些需要此列的查询,使用分析函数即时生成它 row_number() .例如:

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

这会按照 ORDER BY 子句中给定的顺序为每一行分配一个唯一的编号。

您也可以将它放在一个 View 中,这样您甚至不需要记住将它放在查询中,并且您可以确定它每次都以完全相同的方式生成。

关于java - oracle 10g增加自增自减列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12384362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com