반응형

어떤 테이블을 삭제하려고 할 때 "FOREIGN KEY 제약 조건에서 참조하므로 삭제할 수 없습니다" 라는 오류가 나면서


삭제가 안되는 경우가 있다. 이는 해당 테이블을 외래키로 참조하는 다른 테이블이 존재 하기 때문 이다.


그런데 삭제 하려는 테이블 자체에 대한 외래키 제약조건은 sp_helpconstraint 로 확인 할 수 있으나,


해당 테이블을 참조하는 다른 테이블은 sp_helpconstraint 로는 알 수가 없다.


이럴때는 다음과 같이 하면 참조하고 있는 다른 테이블과 연결된 컬럼명을 확인 할 수 있다.


SELECT 
   f.name,
   OBJECT_NAME(f.parent_object_id) TableName,
   COL_NAME(fc.parent_object_id,fc.parent_column_id) ColName
FROM 
   sys.foreign_keys AS f
INNER JOIN 
   sys.foreign_key_columns AS fc 
      ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN 
   sys.tables t 
      ON t.OBJECT_ID = fc.referenced_object_id
WHERE 
   OBJECT_NAME (f.referenced_object_id) = '테이블명'


반응형
반응형

유지보수 업체가 없어진 솔루션에서 Oralce DB의 특정 Table의 record를 삭제 하려고 하였으나,

참조무결성 제약조건 때문에 삭제가 안 되었다.

구글링 하여 방법을 찾아서 정리 한다.

1. 에러 메시지에 나타난 제약조건 이름을 확인 한다.


2. 해당 제약조건 이름을 이용해서 다음 쿼리를 실행 한다.
   쿼리 결과에서 TABLE_NAME 을 확인 할 수 있다.


3. 찾은 테이블에서 참조 하고 있는 record를 삭제 한 다음, 원래 테이블에서 삭제 하면 된다.

반응형

+ Recent posts