2009-06-15 4 views
6

현재 데이터베이스 디자인에서 우리는 두 엔티티 사이에 순환 참조를 가지고 있습니다. 즉, 우리는 각 테이블에 서로 다른 기본 키를 참조하는 외래 키를 가지고 있습니다. 이 테이블에 레코드를 삽입하려면 지연된 제약 조건 검사를 수행해야합니다. SQL Server 2008에서도 가능합니까? 나는 Oracle DDL이 이것을위한 특별한 구문을 가지고 있다는 것을 알고있다.지연된 제약 검사

답변

7

SQL Server에서 지연된 제약 조건 검사를 수행 할 원래 방법이 없습니다.

가장 좋은 옵션은 두 번째 레코드가 삽입 될 때까지 첫 번째 테이블의 외래 키 열에 NULL 값을 삽입 한 다음 동일한 트랜잭션의 일부로 첫 번째 테이블의 외래 키 열을 업데이트하는 것입니다.

내가 관심있어 - 순환 참조의 비즈니스 이유는 무엇입니까? 그것은 확실히 특별한 요구 사항입니다.

동일한 주제에서 this thread도 확인하십시오.

+1

@Aaron. 우리는 동일한 제품의 synonim 사이에 재귀 참조를 가지고 있습니다. –

+0

@Igor : 그러면 원하는 것은 제품 정보와 제품 이름 사이에 1 대 다수의 관계가있는 별도의 테이블에 제품 이름을 저장하는 것입니다. Deferred Constaints Checking은 고유 한 키를 교환하거나 순서를 바꾸려는 경우에 유용합니다 (예 : * "Ordering"* 열) –