1785는 FOREIGN KEY 제약 조건을 만들 때 발생 하는 오류 메시지가 여러 경로가 중첩 될 수 있습니다.

증상

FOREIGN KEY 제약 조건을 만들 때 다음과 같은 오류 메시지가 나타날 수 있습니다.

서버: Msg 1785, 수준 16, 상태 1, 줄 1 소개 FOREIGN KEY 제약 조건 'fk_two' 테이블 'table2'에 경로가 순환 하거나 여러 경로가 중첩 될 수 있습니다. 없음 작업 또는 ON UPDATE NO ACTION을 삭제 시 지정 하 하거나 다른 FOREIGN KEY 제약 조건을 수정 키를 누릅니다. 서버: 메시지 1750, 수준 16, 상태 1, 줄 1 수 제한을 만들. 이전 오류를 참조 하십시오.

원인

SQL Server 테이블의 모든 연계 참조 작업은 DELETE 또는 UPDATE 문의 의해 시작 된 목록에 여러 번 나타날 수 없습니다 때문에이 오류 메시지가 나타납니다. 예를 들어, 연계 참조 작업의 트리에 특정 테이블에 대 한 하나의 경로에 있어야 연계 참조 작업 트리.

해결 방법

이 문제를 해결 하려면 외래 키 테이블에 있는 하나 이상의 경로가 연계 참조 작업의 목록에서 만들를 만들지 마십시오.

여러 가지 방법으로 참조 무결성을 적용할 수 있습니다. 선언적 참조 무결성 (DRI)는 가장 기본적인 방법 이지만 가장 융통성 있는 방법입니다. 더 많은 융통성을 필요로 하는 경우 원하는 높은 수준의 무결성 대신 트리거를 사용할 수 있습니다.

자세한 내용

다음 예제 코드는 오류 메시지를 생성 하는 외래 키 생성 시도의 예:

Use tempdbgo
create table table1 (user_ID integer not null primary key, user_name
char(50) not null)
go

create table table2 (author_ID integer not null primary key, author_name
char(50) not null, lastModifiedBy integer not null, addedby integer not
null)

go

alter table table2 add constraint fk_one foreign key (lastModifiedby)
references table1 (user_ID) on delete cascade on update cascade
go
alter table table2 add constraint fk_two foreign key (addedby)
references table1(user_ID) on delete no action on update cascade
go
--this fails with the error because it provides a second cascading path to table2.

alter table table2 add constraint fk_two foreign key (addedby)
references table1 (user_ID) on delete no action on update no action
go
-- this works.

참조

자세한 내용은 SQL Server 2000 온라인 설명서의 "계단식 참조 무결성 제약 조건" 항목을 참조 하십시오.
속성

문서 ID: 321843 - 마지막 검토: 2017. 2. 7. - 수정: 1

피드백