복붙노트

[SQL] T-SQL : 어떻게 대소 문자를 구분 고유 키를 만들려면 어떻게해야합니까?

SQL

T-SQL : 어떻게 대소 문자를 구분 고유 키를 만들려면 어떻게해야합니까?

어떻게 (2005 SQL 서버) 대소 문자를 구분하는 VARCHAR 필드에 고유 제한 조건을 만들려면 어떻게해야합니까?

현재 내 제약 조건은 다음과 같습니다 :

alter table MyTable
add constraint UK_MyTable_MyUniqueKey unique nonclustered (MyCol)

나는 다음과 같은 두 값을 삽입하려고하면, 나는 오류는 "UNIQUE KEY 제약 ... 위반"을 얻는다.

insert into MyTable (MyCol) values ('ABC')
insert into MyTable (MyCol) values ('abc') --causes a violation of UNIQUE KEY constraint 'UK_MyTable_MyUnqiueKey'

나는 두 개의 다른-맡았다 값이 고유로 처리하고 싶습니다. 나는 다음과 같은 코드를 포함 할 것이다 생각하지만, 내 추가 제약 구문을 변경하는 방법을 모르겠어요.

COLLATE SQL_Latin1_General_CP1_CS_AS

해결법

  1. ==============================

    1.이 경우 민감한 것으로 열을 변경합니다. 나는 당신의 제약 조건에 어떤 변화가 있다고 생각하지 않습니다 ...

    이 경우 민감한 것으로 열을 변경합니다. 나는 당신의 제약 조건에 어떤 변화가 있다고 생각하지 않습니다 ...

    ALTER TABLE mytable 
    ALTER COLUMN mycolumn VARCHAR(10) 
    COLLATE SQL_Latin1_General_CP1_CS_AS
    

    이 칼럼에 상관 선택 또는 결합이 동작의 결과로서 대소해질 것이다.

  2. ==============================

    2.당신은 데이터베이스에있는 데이터의 대소 문자 구분 (컬럼의 가장 작은 단위)을 설정할 수 있습니다. 당신은 인덱스의 경우 감도를 설정할 수 없습니다 - 그 어떤 데이터베이스에 수 있지만은 SQL Server 표현에 인덱스 할 수있는 동등 할 것이다.

    당신은 데이터베이스에있는 데이터의 대소 문자 구분 (컬럼의 가장 작은 단위)을 설정할 수 있습니다. 당신은 인덱스의 경우 감도를 설정할 수 없습니다 - 그 어떤 데이터베이스에 수 있지만은 SQL Server 표현에 인덱스 할 수있는 동등 할 것이다.

  3. from https://stackoverflow.com/questions/485359/t-sql-how-do-i-create-a-unique-key-that-is-case-sensitive by cc-by-sa and MIT license