在oracle中,删除集null不起作用



我创建了两个表:

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);

然后我在deptEmp表中插入了一些记录。但当我尝试删除dept表时,它没有在Emp.department_id列中设置null,而是显示如下错误:

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

外键的子句说"ondeleteset null"。Delete是一个DML操作,如果您试图从dept表中删除行,则相应的emp行将用nulldept_id更新。

但事实并非如此——您试图删除整个表,这是一个DDL操作。这是不允许的,因为您将在emp表上留下引用已不存在的表的约束。如果您也想删除这些约束,可以使用cascade constraints子句:

DROP TABLE dept CASCADE CONSTRAINTS

最新更新