Изменить таблицу, добавив ограничение внешнего ключа в столбце ORA-02253 - PullRequest
0 голосов
/ 09 января 2020

Здравствуйте, я учусь на Oracle Сертификат SQL Associate. И пытаюсь сделать несколько примеров. У меня проблема, из-за которой я не могу легко найти ссылку на это.

create table employees 
(employee_id number NOT NULL,
first_name varchar(20),
last_name varchar(30),
constraint employee_pk primary key (employee_id));

create table employee_notes 
(employee_notes_id number, 
 employee_notes varchar(500),
 constraint pk_employee_notes primary key (employee_notes_id));

создать последовательность employee_notes_seq, начиная с 1 шага на 1


Теперь я хочу добавить новый столбец в Таблица employee_notes с ограничением внешнего ключа. Я не могу найти в синтаксисе, где проблема.

****alter table employee_notes 
add employee_id number
constraint fk_employee_notes foreign key (employee_id) references employees (employee_id);****

я получаю эту ошибку

ORA-02253: спецификация ограничения не позволила ей


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

 alter table employee_notes 
add employee_id number;

-

изменить примечания сотрудника таблицы добавить ограничение fk_employee_notes foreign ключ (employee_id) ссылается на сотрудников (employee_id);

ORA-02253: спецификация ограничения здесь не разрешена

Я хотел бы знать, как я могу это сделать и почему этот синтаксис неправильный:)

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Когда вы используете ALTER TABLE ... ADD для добавления столбца и ограничения в одном выражении, выполните следующее:

-- notice the () and the comma!
alter table employee_notes
add ( 
  employee_id number
, constraint fk_employee_notes 
  foreign key (employee_id) references employees (employee_id)
) ;

Это должно помочь. См. dbfiddle . Синтаксис похож на CREATE TABLE, где вы также пишете все имена столбцов, типы данных и т. Д. c в (), разделенные запятыми.

0 голосов
/ 09 января 2020

Вы сделали что-то не так, потому что - это работает ОК:

SQL> CREATE TABLE employees
  2  (
  3     employee_id  NUMBER NOT NULL,
  4     first_name   VARCHAR (20),
  5     last_name    VARCHAR (30),
  6     CONSTRAINT employee_pk PRIMARY KEY (employee_id)
  7  );

Table created.

SQL>
SQL> CREATE TABLE employee_notes
  2  (
  3     employee_notes_id  NUMBER,
  4     employee_notes     VARCHAR (500),
  5     CONSTRAINT pk_employee_notes PRIMARY KEY (employee_notes_id)
  6  );

Table created.

SQL> ALTER TABLE employee_notes ADD employee_id NUMBER;

Table altered.

SQL> ALTER TABLE employee_notes ADD CONSTRAINT fk_employee_notes
  2  FOREIGN KEY (employee_id)
  3  REFERENCES employees (employee_id);

Table altered.

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