ORA-02262:在按序列默认值修改时对列默认值表达式进行类型检查时发生 ORA-904

问题描述 投票:0回答:1

为什么我收到错误消息?列数据类型是像序列值一样的整数...

SQL> create sequence  SEQ_TEST_ID;

Sequence created.

SQL> desc test
 Name                                                              Null?    Type
 ----------------------------------------------------------------- -------- --------------------------------------------
 VAL                                                                        NUMBER(38)
 D                                                                          DATE
 T                                                                          VARCHAR2(4000)
 N                                                                          NUMBER(8,2)
 S                                                                          TIMESTAMP(6)
 TEST_ID                                                                    NUMBER(38)
 PRIM_ID                                                                    NUMBER(38)

SQL> ALTER TABLE TEST MODIFY (TEST_ID DEFAULT SEQ_TEST_ID);
ALTER TABLE TEST MODIFY (TEST_ID DEFAULT SEQ_TEST_ID)
                         *
ERROR at line 1:
ORA-02262: ORA-904 occurs while type-checking column default value expression

更改表出现错误

oracle sequence default-value oracle19c ora-00904
1个回答
0
投票

您需要修改的是列而不是顺序,而是他的nexe值

SEQ_TEST_ID.nextval

每次插入一行时,它都会创建一个新值。

如果你的表已经有行,你首先需要更新列TEST_ID

create sequence  SEQ_TEST_ID;
CREATE tABLE TEST (TEST_ID NUMBER(30))
ALTER TABLE TEST
    MODIFY TEST_ID INT DEFAULT SEQ_TEST_ID.nextval;

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.