Возможно ли одновременное добавление столбца и ограничения при изменении таблицы Oracle? - PullRequest
1 голос
/ 25 июня 2019

У меня есть задание с просьбой добавить столбец в таблицу и задать для него ограничение.

"Добавить столбец с именем Base_Salary с типом данных NUMBER (7,2) к таблица store_reps. Убедитесь, что введенная сумма превышает 0. "

Я подумал, что это довольно просто, но, может быть, мне придется изменить таблицу дважды, один раз для нового столбца и еще раз для добавления ограничений? Это кажется излишним и неэффективным.

Я пытался снять второе «ДОБАВИТЬ» и переместить скобки, и переставив запятые, кажется, есть похожая ошибка для всего, что я делаю.

Это моя попытка:

ALTER TABLE store_reps; 
 ADD (Base_Salary NUMBER(7, 2)),
 ADD CONSTRAINT store_reps_Base_Salary CHECK (Base_Salary>0);

Я получаю ошибку

ADD CONSTRAINT store_reps_Base_Salary CHECK (Base_Salary>0)
ERROR report - 
UNKNOWN COMMAND

и еще:

Error starting at line : 74 in command -
ALTER TABLE store_reps 
 ADD (Base_Salary NUMBER(7, 2)),
 CONSTRAINT store_reps_Base_Salary CHECK (Base_Salary>0)
Error report -

Любая помощь очень ценится. Я только что запустил SQL несколько недель назад, и я очень нуб.

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Ваш запрос содержит две синтаксические проблемы, которые необходимо исправить:

  • избавиться от запятой до CONSTRAINT
  • избавиться от дополнительной пары скобок вокруг Base_Salary NUMBER(7, 2)

Рабочий пример:

create table store_reps (id number);

ALTER TABLE store_reps 
 ADD Base_Salary NUMBER(7, 2)
 CONSTRAINT store_reps_Base_Salary CHECK (Base_Salary>0);
1 голос
/ 25 июня 2019
create table tr (col1 number);

alter table tr add col2 varchar2(100) constraint tr_cons CHECK (col2 = 'a');

Демо-версия DB Fiddle

Ура !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...