의 원인이 '테이블 aaaIsChildOf에 FOREIGN KEY 제약 조건을 소개 :간단한 예 - 나는 간단한 <strong>A가 B에 SQL에서</strong> 관계를 따라 구현하기 위해 노력 사이클 또는 여러 개의 계단식 경로
IF OBJECT_ID ('dbo.AdependsonB', 'U') IS NOT NULL
DROP TABLE dbo.AdependsonB;
IF OBJECT_ID ('dbo.aaaPerson', 'U') IS NOT NULL
DROP TABLE dbo.aaaPerson;
CREATE TABLE aaaPerson
(
[id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[name] VARCHAR(40)
)
CREATE TABLE AdependsonB
(
[IsChildOf] INT NOT NULL,
[Parent] INT NOT NULL,
CONSTRAINT [pk_AdependsonB] PRIMARY KEY ([IsChildOf],[Parent]),
CONSTRAINT [CHK_identity] CHECK ([IsChildOf] <> [Parent]),
CONSTRAINT [FK_AdependsonB_IsChildOf-aaaPerson_id] FOREIGN KEY ([IsChildOf]) REFERENCES aaaPerson(id) ON DELETE CASCADE,
CONSTRAINT [FK_AdependsonB_Parent-aaaPerson_id] FOREIGN KEY ([Parent]) REFERENCES aaaPerson(id) ON DELETE CASCADE,
)
코드 줄을 실행 사이클 또는 여러 개의 계단식 경로
의 원인이 '테이블 aaaAdependsonB에'FOREIGN KEY constraint'FK_AdependsonB_Parent-aaaPerson_id 소개: 나는 다음과 같은 오류가 발생했습니다
외래 키 제약 조건에서 "ON DELETE CASCADE"을 생략하면 코드가 완벽하게 실행되지만 의미 상 정확하지는 않습니다.
아무도 그러한 경우 왜 조언을 줄 수 있습니까? 이 문제와 관련하여 이미 많은 내용을 읽었지만 해결 방법 없이는 이러한 간단한 관계를 구현할 수없는 이유가 없습니다. 나는 아버지가 아들을 많이 얻을 수있는 시나리오의 어떤 종류를 입력하고 아들을 삭제에주의를 취할 조언
관련 항목 : http://stackoverflow.com/questions/21243365/resolve-cycles-and-multiple-cascade-paths –
왜 자식 테이블에 IsChildOf와 Parent가 모두 필요합니까? 이 두 가지가 어떻게 다른지 설명해 주시겠습니까? 부모는 정말로 "상위 부모"입니까? 그리고이 관계를보다 간단하게 표현할 수는 없습니다. 당신은 항상 계층 적 경로를 따라 가기 부모에게 다가 갈 수 있어야합니다. 이 모든 정보를 단일 표에 포함시킬 수 있습니다. –