programing

Oracle SQL에서 테이블 삭제

skycolor 2023. 9. 14. 21:53
반응형

Oracle SQL에서 테이블 삭제

테이블을 놓거나 테이블을 만들 때마다 다음 오류가 나타납니다.

DROP TABLE SUBURB;
DROP TABLE STOCKITEM;
DROP TABLE MANUFACTURER;
DROP TABLE WAREHOUSE;
DROP TABLE CITY;
DROP TABLE STATE;

1행 오류: ORA-02449: 테이블의 고유/기본 키가 외부 키에서 참조됨

 CREATE TABLE STATE (
 statecode varchar(3)
 ,statename varchar(30)
 ,population number(8)
 ,primary key(statecode)
  );

1행 오류: ORA-00955: 기존 개체에서 이름이 이미 사용되고 있습니다.

누가 왜 이런 일이 일어나는지 설명해 줄 수 있습니까?

외래 키에 참조된 테이블을 확실히 떨어뜨리려면 다음과 같이 강제할 수 있습니다.

drop table state cascade constraints;

이 구문은 Oracle SQL Reference에 정의되어 있습니다.

이 경우 외부 키 관계가 삭제됩니다.따라서 테이블(및 기본 키)을 다시 작성한 후에는 테이블을 다시 작성해야 합니다.일반적으로 가장 일반적인 사용 사례는 개발 또는 CI 환경에서 스키마를 폐기하고 다시 만드는 것이기 때문에 괜찮습니다.

사용할 수 있습니다.cascade constraints우리의 빌드 스크립트를 유지보수하기 쉽게 만들 수 있습니다.두 가지 대안이 있습니다.

  1. 스크립트를 사용하거나 동적 SQL을 사용하여 테이블을 삭제하기 전에 외부 키 제약 조건을 명시적으로 삭제합니다.
  2. DROP TABLE 문을 순서대로 지정하여 종속 테이블이 먼저 재핑되고 성가신 외래 키가 함께 표시됩니다.몇 개의 테이블에 충분히 쉽게 접근할 수 있고, 큰 스키마를 사용하면 더 고통스럽습니다.

아래 쿼리를 사용하여 테이블을 삭제하기 전에 삭제해야 하는 테이블의 참조를 가져올 수 있습니다.

select table_name, constraint_name, status, owner
from dba_constraints
where 1=1
--and r_owner = :p_owner --if you know schema
and constraint_type = 'R'
and r_constraint_name in
(
   select constraint_name from dba_constraints
   where constraint_type in ('P','U')
   and lower(table_name) = lower(:p_table_name)
   --and r_owner = :p_owner
)
order by table_name, constraint_name

만약 당신이 기본 키를 만들고 또한 당신이 테이블을 떨어뜨릴 수 없는 것보다 외국 키를 만든다면 당신은 이런 식으로 테이블을 떨어뜨립니다 예를 들어 만약 당신이 이 테이블을 떨어뜨리고 싶은 학생들이나 선생님들의 테이블을 가지고 있다면 당신은 써야 합니다.

DROP TABLE students CASCADE CONSTRAINTS; 

그리고 선생님들의 식탁을 내려 놓으셨습니다.

DROP TABLE teachers CASCADE CONSTRAINTS;

교외 테이블은 다른 테이블에 대한 부모 테이블입니다. 먼저 자식 테이블을 떨어뜨린 후 다음에SUBURB테이블..

그리고 STATE라는 이름의 테이블이 데이터베이스에 이미 있습니다...그래서 같은 이름의 테이블을 만들 수 없습니다. ..일단 STATE 테이블을 떨어뜨리면 다른 테이블을 만들 수 있습니다. ..

Oracle 샘플 데이터베이스에서 잘 작동하는 솔루션은 다음과 같습니다.

DROP TABLE ['Your_Table_Name'] STATE CASCADE CONSTRAINTS;

언급URL : https://stackoverflow.com/questions/32292561/dropping-a-table-in-oracle-sql

반응형