MSSQL의 테이블 삭제(DROP TABLE) 시 위와 같이 FOREIGN KEY 제약 조건에서 참조하므로 삭제할 수 없습니다. 라는 오류창 및 메시지를 확인할 수 있습니다.(※Foreign Key = 외래키)
이런 오류가 발생하는 원인은 삭제하려는 테이블이 다른 테이블과 KEY가 엮여 있기 때문에 제약조건(constraint)이 설정되어 있는 부분을 먼저 삭제 또는 변경하신 후 테이블 삭제가 진행이 되어야 하기 때문입니다.
아래 과정은 이런 상황에서 테이블을 삭제할 수 있는 방법입니다.
1. 먼저 위의 오류 메시지를 확인하기 위해 해당 테이블에서 마우스 오른쪽 클릭 후 삭제 버튼을 클릭합니다.
2. 확인 버튼을 클릭하여 해당 테이블 삭제를 시도합니다.
※ 1, 2번 과정없이 DROP TABLE 명령어로 직접 실행하셔도 됩니다.
※ 운영중인 DB에서 바로 작업하지 마시고 테스트DB에서 먼저 작업해 보시길 권장드립니다.
3. DROP TABLE을 시도할 때 아래와 같이 삭제가 불가능하다는 메시지를 확인할 수 있습니다.
4. 더 자세한 정보를 보기 위해 종속성 표시 버튼을 클릭합니다.
이 화면에서는 삭제하려는 테이블이 기타 테이블과 제약조건이 설정되어 있는 상태를 확인할 수 있습니다.
[DeleteTest]에 종속된 개체를 클릭하시면 DeleteTest라는 테이블을 외래키로 지정하여 사용되고 있는(DeleteTest에 종속된) cnsrTestTable이라는 테이블이 있다는 것을 확인할 수 있습니다.
[Delete Test]이(가) 종속된 개체를 클릭하시면 위의 상황과는 반대로 DeleteTest 테이블에서 다른 테이블의 key를 외래키(Foreign Key)로 지정하여 사용하고 있는 테이블을 확인할 수 있습니다.
이는 외래키(Foreign Key)를 지정하되 어떤 테이블이 주가 되는지에 대한 차이입니다.
5. 이럴 경우 ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건 명령을 이용하여 제약조건을 삭제하든지
종속된 테이블을 DROP TABLE 테이블명 명령으로(또는 마우스 클릭으로 1, 2번과 같이 진행) 삭제하는 방법이 있습니다.
6. 위와 같이 처리한 후 종속성을 조회해보면 4번화면 과 다르게 제약조건이 엮인 개체가 없는 것이 확인됩니다.
7. 다시 1번, 2번 과정과 같이 테이블 삭제를 다시 시도하시면 정상적으로 삭제되는 것을 확인할 수 있습니다.
'Database > MSSQL' 카테고리의 다른 글
ID 열의 명시적 값은 열 목록이 사용되고 IDENTITY_INSERT가 ON일 때만 지정할 수 있습니다. (2) | 2016.08.03 |
---|---|
MSSQL Server 에이전트 서비스 활성화 (4) | 2015.10.28 |
MSSQL 복원(Restore) 시 데이터베이스가 사용 중이어서 배타적으로 액세스 할 수 없습니다 (5) | 2015.08.13 |
[MSSQL]SQL Server 테이블을 저장 하려고 하면 오류 메시지: "변경 내용 저장 허용 되지 않습니다." (1) | 2014.05.20 |
MSSQL 2008 설치 (14) | 2013.09.24 |
MSSQL IF EXISTS (SELECT UPDATE, SELECT INSERT) (2) | 2013.02.07 |
[MSSQL] 조인,JOIN (INNER JOIN, OUTER JOIN) (2) | 2013.01.22 |
MS-SQL에서 테이블 생성 (0) | 2012.12.03 |
MSSQL 소수점 절사 함수 FLOOR() (0) | 2012.09.13 |
MSSQL SA 계정 비밀번호 분실 시 변경 방법 (0) | 2012.08.14 |