我有一个带有以下列的表:
NOTEID NUMBER NOT NULL,
出于所有目的和目的,此列是主键。该表有几千行,每行都有一个唯一的ID。在此之前,应用程序将从表中选择MAX()值,添加一个,然后将其用作下一个值。这是一个可怕的解决方案,并且不是事务或线程安全的(实际上,在它们甚至没有对该列的UNIQUE约束之前,我都可以看到相同的NOTEID在9个不同的情况下被复制了)。
我对Oracle不太熟悉,因此我想了解更改此表的最佳语法并使该列自动递增。如果可能的话,我想使序列中的下一个值为表中的MAX(NOTEID)+ 1,或者只是使其为800或其他值。谢谢!
如果您的MAX(noteid)为799,请尝试:
CREATE SEQUENCE noteseq START WITH 800 INCREMENT BY 1
然后,在插入新记录时,对于NOTEID列,您将执行以下操作:
noteseq.nextval