Изменение таблицы ошибок SQL - PullRequest
0 голосов
/ 17 мая 2018

Эй, ребята, просто интересно, что я делаю неправильно в этом сценарии.

ALTER TABLE SSV_TOURS (
ADD CRUISE_ID# CHAR(5),
ADD CONSTRAINT TOURS_CRUISEID#_FK FOREIGN KEY (CRUISE_ID#) REFERENCES SSV_CRUISES(CRUISE_ID#)
);

Когда я выполняю команды ADD индивидуально, таблица меняется, поэтому я не совсем уверен, что делаю неправильно. Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

В Oracle alter table допускает только одну модификацию за раз.Это можно увидеть на диаграмме синтаксиса в документации : стрелок назад нет.

Итак:

ALTER TABLE SSV_TOURS ADD CRUISE_ID# CHAR(5);

ALTER TABLE SSV_TOURS ADD CONSTRAINT TOURS_CRUISEID#_FK FOREIGN KEY (CRUISE_ID#) REFERENCES SSV_CRUISES(CRUISE_ID#);
0 голосов
/ 17 мая 2018

Я думаю, что вы не можете смешивать column_clause и constraint_clause в одном предложении alter table. Однако в вашем случае вам нужно либо разделить таблицу изменений на две (одну с добавлением столбца, а другую с ограничением добавления) или слегка переписать ваш оператор как

ALTER TABLE SSV_TOURS (
ADD CRUISE_ID# CHAR(5) 
    CONSTRAINT TOURS_CRUISEID#_FK FOREIGN KEY (CRUISE_ID#) 
    REFERENCES SSV_CRUISES(CRUISE_ID#)
);
...