小编典典

Oracle-修改现有表以自动增加列

sql

我有一个带有以下列的表:

NOTEID      NUMBER NOT NULL,

出于所有目的和目的,此列是主键。该表有几千行,每行都有一个唯一的ID。在此之前,应用程序将从表中选择MAX()值,添加一个,然后将其用作下一个值。这是一个可怕的解决方案,并且不是事务或线程安全的(实际上,在它们甚至没有对该列的UNIQUE约束之前,我都可以看到相同的NOTEID在9个不同的情况下被复制了)。

我对Oracle不太熟悉,因此我想了解更改此表的最佳语法并使该列自动递增。如果可能的话,我想使序列中的下一个值为表中的MAX(NOTEID)+
1,或者只是使其为800或其他值。谢谢!


阅读 178

收藏
2021-04-07

共1个答案

小编典典

如果您的MAX(noteid)为799,请尝试:

CREATE SEQUENCE noteseq
    START WITH 800
    INCREMENT BY 1

然后,在插入新记录时,对于NOTEID列,您将执行以下操作:

noteseq.nextval
2021-04-07