> 데이터 베이스 > MySQL 튜토리얼 > SQL Server에서 조건부 고유성을 어떻게 적용할 수 있습니까?

SQL Server에서 조건부 고유성을 어떻게 적용할 수 있습니까?

Patricia Arquette
풀어 주다: 2025-01-10 08:17:40
원래의
426명이 탐색했습니다.

How Can I Enforce Conditional Uniqueness in SQL Server?

SQL Server에서 조건부 고유 제약 조건 구현

SQL Server의 고유 제약 조건은 지정된 열 전체에 항목이 중복되는 것을 방지합니다. 하지만 특정 조건에서만 고유성을 어떻게 적용합니까? 해결책은 필터링된 인덱스를 활용하는 것입니다.

SQL Server 설명서에 따르면 필터링된 인덱스는 필터 조건자에 의해 정의된 테이블 행의 하위 집합만 인덱싱하는 비클러스터형 인덱스입니다.

이 기능을 사용하면 고유한 인덱스와 조건부 필터를 결합하여 선택적으로 고유성을 적용할 수 있습니다. 테이블을 고려해보세요:

<code class="language-sql">Table(ID, Name, RecordStatus)</code>
로그인 후 복사

여기서 RecordStatus은 1(활성) 또는 2(삭제)일 수 있습니다. ID가 1인 경우에만 고유한 RecordStatus 값을 보장하려면 필터링된 인덱스를 생성합니다.

<code class="language-sql">CREATE UNIQUE INDEX MyIndex
ON MyTable(ID)
WHERE RecordStatus = 1;</code>
로그인 후 복사

이것은 활성 레코드(여기서 ID)에 대해서만 RecordStatus = 1에 고유성을 적용합니다. ID와 함께 중복된 RecordStatus = 1을 삽입하려고 하면 오류가 발생합니다.

<code>Cannot insert duplicate key row in object 'MyTable' with unique index 'MyIndex'. The duplicate key value is (9999).</code>
로그인 후 복사

필터링된 인덱스가 SQL Server 2008에 도입되었다는 점을 기억하는 것이 중요합니다. 이전 버전(예: SQL Server 2005)의 경우 조건부 고유성을 달성하려면 트리거와 같은 대체 접근 방식이 필요합니다.

위 내용은 SQL Server에서 조건부 고유성을 어떻게 적용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿