2014-09-08 2 views
0

. Oracle 10g를 사용하고 있습니다.드롭 외래 키 제약

+2

을 시도 제약 조건의 확인 이름을 알아보십시오! – Jens

+0

누락 된 키워드라고 !! – Vishal

+0

테이블 _ibfk_1은 내가 여기에 주어진 기본 이름입니까 ?? – Vishal

답변

0

제약 이름을 지정하지 않았으므로 오라클이 생성했습니다 (SYS_034849548과 같음).

당신은 그것을 드롭 할 수 있도록 제약 조건 이름을 찾을 필요가 :

select constraint_name 
from user_constraints 
where table_name = 'ABC' 
    and constraint_type = 'R' 

는 제한 조건 이름을 표시합니다. 그런 다음 사용하여 제약 조건을 삭제 할 수 있습니다

alter table abc drop constraint <constraint_name>; 

구문이 alter table ... drop constraint 것을

주 (당신은 SQL 문을 사용하여 검색 이름으로 <constraint_name> 교체). drop foreign key은 없습니다.

+0

누락 BTW 제약 조건의 이름이 난 지역 오라클에 가서 그것을 확인했다 방법이 정확히 – Vishal

+0

을 선택하는 행을 보여줍니다 테이블 변경은 1 호선에서 외래 키 mn_ibfk_1 * 오류 드롭 MN 서버 홈 페이지. – Vishal

+0

"* no rows select *"가 표시되면 해당 테이블의 외래 키를 만들지 않았거나 잘못된 테이블 이름을 제공했습니다. 테이블 이름은 Oracle 시스템 뷰의 UPPPER 경우에 저장됩니다. 대문자로 테이블 이름을 제공해야합니다. –

0

제약 mn_ibfk_1을 삭제 MN이

테이블 변경을 시도;

오류 메시지하시기 바랍니다 추가이 쿼리

SELECT a.table_name child_table, 
     b.table_name parent_table, 
     a.constraint_name child_constraint, 
     b.constraint_name parent_constraint, 
     c.column_name child_column, 
     d.column_name parent_column 
    FROM user_constraints a, 
     user_constraints b, 
     user_cons_columns c, 
     user_cons_columns d 
WHERE  a.constraint_type = 'R' 
     AND b.constraint_type = 'P' 
     AND b.constraint_name = a.r_constraint_name 
     AND A.table_name = c.table_name 
     AND b.table_name = d.table_name 
     AND a.constraint_name = c.constraint_name 
     AND b.constraint_name = d.constraint_name 
     AND c.position = d.position 
     AND a.table_name = 'mn' ;