2011-02-17 2 views
2

문자열과 정수 조합이 고유한지 확인하는 고유 제약 조건을 만들 수 있어야합니다.SQL Server - 하나의 열이 VARCHAR 인 여러 열에 대해 고유 제한 조건을 만드는 방법

내가 시도 코드 :

ALTER TABLE mytable ADD CONSTRAINT 
constraint_Unique_ForeignID_MyString UNIQUE NONCLUSTERED 
(
    foreign_id, my_string_col 
) 

하지만 얻을 오류 :

Msg 1919, Level 16, State 1, Line 1
Column 'my_string_col' in table 'my_string_tbl' is of a type that is invalid for use as a key column in an index.
Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.

어떻게 내가 필요로하는 제약 조건을 만들 수 있습니까?

+1

테이블 정의를 알려주십시오. – gbn

답변

2

어떻게 의 BIG이 귀하의 열입니까 ??

모든 색인은 최대 900 바이트까지의 열만 포함 할 수 있습니다. 이 문제를 해결하거나 그 수를 더 높은 값으로 늘릴 수있는 방법은 없습니다.

+0

사실 도메인 이름 일 뿐이므로 100, 200 자 이상이면 충분합니다. – gb2d

+0

사실, 방금 쿼리를 실행했습니다. 최대 길이는 38입니다. – gb2d

+0

@BombDefused : 실제 길이는 무의미합니다. **이 테이블의 ** 열은 ** 무엇입니까? 그것은 진정으로'VARCHAR (100)'입니까 ?? 아니면'VARCHAR (2000)'또는'VARCHAR (MAX)'일뿐입니다 ... –

3

이 중 하나입니다 :

  • 텍스트/NTEXT/이미지/VARCHAR (최대)/NVARCHAR (최대)/VARBINARY (최대)/XML
  • 너무 오래> 900 바이트

에서 이 경우 값의 해시를 기반으로 계산 된 열을 추가하고이를 제약 조건에 사용할 수 있습니다.

물론 text/ntext/image가 있으면이 작업도 실패합니다. 그래서 SQL Server 2005 및 해시로 소개 된 새로운 varchar (max), nvarchar (max), varbinary (max) 유형 중 하나로 변경하십시오.

관련 문제