修改列时出现 "ORA-00900: invalid SQL statement" 错误

I get "ORA-00900: invalid SQL statement" error while modifying column

我在 SQL 开发人员中有此代码:

create table course_table 
(
    course_id number(5) not null,
    course_name varchar2(25) not null,
    course_hours number(1) not null,
    department varchar2(10) not null,
    description varchar2(50) not null,
    teacher varchar2(20) not null,
    create_dttm DATE,
    update_dttm TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_created varchar2(20) not null,
    user_updated varchar2(20) not null
);

commit;

alter table course_table
add CONSTRAINT course_id_pk PRIMARY KEY (course_id);

ALTER TABLE course_table
**ALTER** COLUMN course_id varchar2(5)

粗体字有误。它说

ORA-00900: invalid SQL statement.

谁能帮我看看我做错了什么?

用于修改列的 Oracle 语法是 MODIFY

ALTER TABLE course_table MODIFY course_id varchar2(5);

我相信您使用的是 Sql 服务器语法(即 ALTER TABLE ALTER COLUMN

Example

显然这引出了一个问题,为什么您不首先创建具有正确类型的列,以免遇到迁移问题。

总是像这样在 table 中添加 CONSTRAINT

CREATE TABLE COURSE_TABLE
(
COURSE_ID NUMBER(5) NOT NULL,
CONSTRAINT COURSE_TABLE_PK PRIMARY KEY(COURSE_ID)
);

这将解决世界上所有尝试 sql fiddler 或试图修改它的头痛问题。由于您已经知道这将成为主键,因此您不妨从一开始就安装约束。