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
우리의 빌드 스크립트를 유지보수하기 쉽게 만들 수 있습니다.두 가지 대안이 있습니다.
- 스크립트를 사용하거나 동적 SQL을 사용하여 테이블을 삭제하기 전에 외부 키 제약 조건을 명시적으로 삭제합니다.
- 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
'programing' 카테고리의 다른 글
Spring RestTemplate로 SSL 인증서 검사를 비활성화하는 방법? (0) | 2023.09.14 |
---|---|
워드프레스 SQL: 게시물 카테고리 및 태그 가져오기 (0) | 2023.09.14 |
Razor View Engine이 Mono에 적합합니까? (0) | 2023.09.14 |
Writeline은 새 줄 없이 줄을 씁니다. 파일만 채웁니다. (0) | 2023.09.09 |
재귀적 CTE를 사용하여 레코드가 다른 레코드의 후손인지 확인 (0) | 2023.09.09 |