В оракуле при удалении установлен нуль не работает - PullRequest
0 голосов
/ 08 декабря 2018

Я создал две таблицы:

Create Table Dept    
(Department_id number Constraint Depart_id_pk Primary Key
,Department_name varchar2(20));

Create table Emp
  (Emp_id number Constraint Empl_id_pk Primary Key
 ,First_name varchar2(10)
 ,salary number
 ,Department_id number
 ,Constraint depart_id_fk Foreign Key (department_id) 
      References Dept (Department_id) on delete set null);

Затем я вставил несколько записей в таблицы dept и Emp.Но когда я пытаюсь удалить таблицу dept, вместо установки значения NULL в столбце Emp.department_id она выдает следующую ошибку:

SQL> Drop Table Dept;
Drop Table Dept
           *
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys

1 Ответ

0 голосов
/ 08 декабря 2018

В предложении внешнего ключа сказано "on delete set null".Удалить - это операция DML, и если бы вы попытались удалить строки из таблицы dept, соответствующие строки emp были бы обновлены с помощью null dept_id.

Но это не такслучай - вы попытались удалить всю таблицу, операция DDL.Это недопустимо, потому что вы оставите ограничения для таблицы emp, которые ссылаются на таблицу, которая больше не существует.Если вы также хотите удалить эти ограничения, вы можете использовать предложение cascade constraints:

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