2010-02-22 5 views
1

XML 데이터가있는 SQL (Microsoft SQL 2008) 테이블이 열 중 하나에 있습니다. 각 XML 루트 노드에는 GUID 인 특성이 있습니다. 예를 들어T-SQL의 고유 한 XML 요소 제한

:

<!--Row 1--> 
<example:root id="E0B1BCEA-C0E2-4d7c-BF67-FA9A7C3FBA73"> 
    [...] 
</example:root> 

<!--Row 2--> 
<example:root id="13BB87F4-32A5-4de7-8CE9-E62AF002B958"> 
    [...] 
</example:root> 

어떻게이 같은 루트/@ ID 값을 공유하는 두 개의 행이없는 즉,이 GUID는 고유한지 확인하는 제약 조건을 만들 수 있습니다?

참고 : 응용 프로그램 수준에서 수행하거나 삽입에 대한 저장 프로 시저를 만들 수 없습니다 (기존 응용 프로그램을 변경해야하기 때문에).

답변

1

별도의 입력란이 아닌 경우 입력하지 않을 수도 있습니다.

그러나 삽입 할 때 XML 데이터에서 GUID를 추출하여 별도의 필드에 넣을 수 있습니다. 그런 다음 해당 필드에 고유 한 제한 조건을 설정할 수 있습니다.

또 다른 접근법은 중복 검색을 위해 데이터베이스를 검색하는 야간 작업을 만드는 것입니다.

2

예, 당신은

  • 는 계산, "ID가"기능
  • 저장된 것을 사용하는 것을 잡고 테이블에 열을 지속 만들 XML
  • 에서 "ID"를 추출하는 저장 기능을 쓸 수있다
  • 새롭고 계산 된 + 영구 열에 고유 색인을 생성하십시오.

분명히 작동 할 것입니다.

+0

+1 정확히 내가 생각했던 것! –