programing

드롭 테이블도 제약 조건을 드롭합니까?

megabox 2023. 10. 26. 20:56
반응형

드롭 테이블도 제약 조건을 드롭합니까?

내가.drop테이블 또한 제약조건을 떨어트리는가?

여기 간단한 테이블이 있습니다.인덱스, 무결성 제약 조건 및 트리거가 있습니다.

SQL> desc t69
 Name               Null?    Type
 ------------------ -------- ----------------------------
 ID                 NOT NULL NUMBER

SQL> select index_name from user_indexes  where table_name = 'T69';

INDEX_NAME
------------------------------
SYS_C0034158

SQL> select constraint_name, constraint_type from user_constraints where table_name = 'T69';

CONSTRAINT_NAME                C
------------------------------ -
SYS_C0034157                   C
SYS_C0034158                   P

SQL> select trigger_name from user_triggers where table_name = 'T69';

TRIGGER_NAME
------------------------------
TRG69

SQL> 

떨어뜨려도 돼요?할 수 있습니다.

SQL> drop table t69;

Table dropped.

SQL> select constraint_name, constraint_type from user_constraints where table_name = 'T69';

no rows selected

SQL> select trigger_name from user_triggers where table_name = 'T69';

no rows selected

SQL> 
SQL> select index_name from user_indexes  where table_name = 'T69';

no rows selected

SQL> 

아무것도 남지 않았습니다.다른 개체가 테이블을 참조할 때는 다릅니다.

다른 테이블인 P23이 있습니다.외국 키에 의해 참조되어 뷰에서 사용됩니다.

SQL> create table c23 (id number, p_id number);

Table created.

SQL> alter table c23 add foreign key (p_id) references p23;

Table altered.

SQL> create view v23 as select * from p23;

View created.

SQL> 

그럼 이 테이블을 내려도 될까요?

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


SQL> 

안돼요.부수적으로 RESTRICT 구문과 관련하여 Oracle에서는 지원되지 않습니다.그럴 필요는 없습니다. 관계 무결성을 강화하는 테이블을 폐기할 수는 없습니다.우리가 그렇게 하기를 고집하지 않는 한:

SQL> drop table p23 cascade constraints;

Table dropped.

SQL> desc t23
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COLA                                               NUMBER
 COLB                                               NUMBER
 COLC                                               NUMBER
 GENDER                                             VARCHAR2(1)
 ID                                                 NUMBER

SQL> select * from v23
  2  /
select * from v23
              *
ERROR at line 1:
ORA-04063: view "FOX.V23" has errors


SQL> 

CASCADE CONSTRANTES 절은 테이블과 이를 참조하는 모든 외부 키를 삭제합니다.그렇지 않으면 하위 테이블은 그대로 유지됩니다.테이블을 참조하는 보기(및 PL/SQL)는 그대로 남아 있지만 잘못된 상태입니다.

언급URL : https://stackoverflow.com/questions/43488105/does-a-drop-table-also-drop-the-constraints

반응형