Я получаю сообщение об ошибке "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
)
Очевидно, что возникает вопрос, почему вы не просто создаете столбец с правильным типом, во-первых, чтобы не столкнуться с проблемами миграции.