2012-12-09 2 views

답변

1

하면 당신은 당신이 한 번에 저장 프로 시저 하나의 행을 통해 삽입 액세스를 허용하여 해결 할 수있는주기 http://sqlfiddle.com/#!12/ea0cd/7

을 만들 대량 행을 삽입 할 수 있기 때문에, 작동하지 않습니다 다음과 같습니다.

는 자기가 ParentId를 참조있는 테이블을 만듭니다
Create Table Tree (
    Id int not null primary key, 
    ParentId int foreign key references Tree(Id) -- might need to add constraint afterwards 
); 

테이블에 대한 업데이트 만 삽입과 삭제를 허용하지 마십시오

. 업데이트하지 않고는주기를 만들 수 없습니다.

당신의 트리 노드가 다른 데이터가있는 경우,이에 대한 별도의 옆으로 보이는 테이블을 만드는 :

Create Table Node (
    Id int not null primary key, 
    data1 varchar(10), 
    constraint FK_Tree Foreign Key (Id) References Tree (Id) 
); 
+0

좋은 생각, 당신은 할 수 사용 권한보다는 트리거를 사용하여 id & ParentID에 대한 업데이트를 방지하고 다른 데이터에 대한 lookaside 테이블이 필요하지 않게하십시오. – dbenhur

+0

"업데이트 없이는 사이클을 만들 수 없습니다". INSERT ROW (1,2) INSERT ROW (2,3) INSERT ROW (3,1) –

+0

@ErwinSmout'INSERT ROW (1,2)'는 FK를 위반합니다. –

관련 문제