테이블 설계 후 Foreign Key 제약사항을 정의 하고, 물리적 DB에 반영하려고 ALTER 문들을 실행하고 있는데 희안한 에러가 나오는 것이다.
메시지547, 수준16, 상태0, 줄1 ALTER TABLE 문이FOREIGN KEY 제약조건"FK_TABLE_COLUMN"과(와) 충돌했습니다. 데이터베이스" ", 테이블"dbo. ", column ' '에서충돌이발생했습니다.
|
이건 뭔가 싶어 두 테이블을 비교해봤더니 둘다 데이터형도 똑같고 제약사항도 NOT NULL 로 동일한 것을 확인하였다.
구글링 결과 제약조건을 잡을 때 기존에 테이블에 들어있는 데이터들을 비교하여 부모 테이블의 PK를 잘못 참조하여 이미 기존에 들어간 값이 있다면 저렇게 충돌 메시지를 던져준단다.
부모-자식 간 기존 데이터가 충돌이 있어도 앞으로 데이터만 맞추겠다면 아래와 같은 옵션을 주면 된다.
ALTER TABLE tableanme ADD CONSTRAINT FK_constraint_name FOREIGN KEY (child_column) REFERENCES parent_tablename(parent_column) --(X)
ALTER TABLE tableanme WITH NOCHECK ADD CONSTRAINT FK_constraint_name FOREIGN KEY (child_column) REFERENCES parent_tablename(parent_column) --(O)
|
'SQL > 도움말 팁들!' 카테고리의 다른 글
[MSSQL] SQL SERVER 2005 사용자 추가 및 계정 권한 컨트롤 (0) | 2012.07.06 |
---|---|
[MSSQL] 특정 컬럼명을 포함하는 테이블 목록보기 (0) | 2012.07.03 |
대량의 테이블 N개 단위로 끊어서 삭제하기 (0) | 2012.06.27 |
로그파일 LDF 크기 줄이기 (0) | 2012.06.27 |
Sql Server 2000 에서 사용자 로그인계정 정보 가져오는 SP - sp_help_revlogin (0) | 2011.12.10 |