Я получаю сообщение об ошибке "ORA-00900: неверный оператор SQL" при изменении столбца

У меня есть этот код в 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: неверный оператор SQL.

Может кто-нибудь помочь мне, что я делаю не так?

2 ответа

Решение

Всегда добавляйте CONSTRAINT внутри таблицы, например, так

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

Это решит все головные боли в мире, пытаясь использовать sql fiddler или пытаться изменить его. Поскольку вы уже знаете, что это будет первичный ключ, вы можете также установить ограничение с самого начала.

Синтаксис Oracle для изменения столбца MODIFY

ALTER TABLE course_table MODIFY course_id varchar2(5);

Я полагаю, что вы используете синтаксис сервера Sql (который ALTER TABLE ALTER COLUMN)

пример

Очевидно, что возникает вопрос, почему вы не просто создаете столбец с правильным типом, во-первых, чтобы не столкнуться с проблемами миграции.

Другие вопросы по тегам