답변
고유성은 고유 제한 조건을 사용하여 적용 할 수 있습니다.
고유 인덱스가 대소 문자를 구분하는지 여부는 서버 (또는 테이블) 데이터 정렬에 의해 정의됩니다.
할 수 있습니다이 쿼리를 사용하여 데이터베이스의 현재 데이터 정렬을 얻을 :
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;
당신은 같은 얻어야한다 : 데이터 정렬의 끝에 여기
SQLCollation
————————————
SQL_Latin1_General_CP1_CI_AS
은 "CI_AS을" 의미 : CI = 대소 문자 구분, AS = 액센트 구분.
필요에 따라 변경할 수 있습니다. 데이터베이스 및/또는 테이블에 대/소문자 구분 데이터 정렬이있는 경우 인덱스의 고유성이 대/소문자를 구분할 것으로 예상됩니다. abcdef 및 ABCDEF은 모두 고유 한 문자열이어야합니다.
마크
UPDATE: 난 그냥이 (SQL 서버 2008 개발자 버전 64)을 시도
이 - (내 데이터베이스는 일반적으로 "Latin1_General_CI_AS 데이터 정렬을 사용하고 있지만 다른 한 당을 정의 할 수 있습니다 나를 위해 작동 테이블/심지어 VARCHAR 컬럼) 당 :
CREATE TABLE TestUnique
(string VARCHAR(50) COLLATE SQL_Latin1_General_Cp1_CS_AS)
CREATE UNIQUE INDEX UIX_Test ON dbo.TestUnique(string)
INSERT INTO dbo.TestUnique(string) VALUES ('abc')
INSERT INTO dbo.TestUnique(string) VALUES ('ABC')
SELECT * FROM dbo.TestUnique
을하고 난 다시 얻을 :
string
ABC
abc
,
및 고유 색인에 대한 오류가 없습니다.
나는 marc에 의해 나열된 스크립트를 시도하고 SQL Server 2008의 32 비트에서 제대로 작동했습니다. – RBarryYoung
UI에서 테이블 당이 작업을 수행 할 방법이 없다고 보입니다. 그러나 전체 데이터베이스에 대해 데이터베이스를 만드는 동안 수행 할 수 있습니다. 이는 너무 먼 것 같습니다. –
varchar
/nvarchar
열에 이미 unique key/index
이 정의되어있는 기존 테이블에서 수행해야하는 경우가 있습니다. 다음은 스크립트입니다.
ALTER TABLE [YourTable] DROP CONSTRAINT [UIX_YourUniqueIndex]
GO
ALTER TABLE [YourTable] ALTER COLUMN [YourColumn] [nvarchar](50) COLLATE Latin1_General_CS_AS NOT NULL;
GO
ALTER TABLE [YourTable] ADD CONSTRAINT [UIX_YourUniqueIndex] UNIQUE NONCLUSTERED
(
[YourColumn] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
감사합니다 @Devraj Gadhavi가 단계별로 설명 했으므로 정확하게 수행해야합니다. 그 스크립트를 만들려고했으나 (SSMS 2008R2 사용), 나는 더 게으른 방식으로 같은 결과를 얻었습니다 :-).트리보기에서 필자는 내 테이블과 열을 찾은 다음 오른쪽 정렬을 변경하려는 열을 클릭하고 '수정'을 선택했습니다. 표시된 창에서 대소 문자를 구분하여 속성의 데이터 정렬을 변경 한 다음 창의 맨 위 섹션 (열이 테이블 형식으로 나열된 곳)의 열린 공간에서 아무 곳이나 마우스 오른쪽 단추를 클릭하고 "변경 스크립트 생성"을 선택했습니다 ... "
- 1. 고유 한 열 적용
- 2. 고유 한 열 수?
- 3. SharePoint : 고유 한 열 값
- 4. SQLAlchemy/Elixir에서 고유 한 열 값 선택
- 5. Symfony - 고유 한 열 검증 문제 업데이트
- 6. 부분적으로 고유 한/고유 한 행을 반환합니다.
- 7. 고유 한 대 오라클의 고유 한 키워드
- 8. '고유 한 키'또는 '고유 한 키'색인
- 9. 고유 한 문자열을 고유 한 정수로 변환
- 10. 고유 한 열 쌍을 A, B 또는 B, A
- 11. : 다중 열 고유 제한 조건
- 12. .NET에서 고유 한 스레드마다 고유 한 난수를 생성하는 방법은 무엇입니까?
- 13. 날짜의 고유 한 int
- 14. 테이블에있는 고유 한 값
- 15. 술어와 고유 한 오브젝트
- 16. 고유 한 사용자 서명
- 17. 고유 한 URL plone
- 18. 프롤로그의 고유 한 결과
- 19. 고유 한 암호화 작성
- 20. 고유 한 이름
- 21. 고유 한 문자로 분할
- 22. 고유 한 CSR입니까?
- 23. SQL 서버는 고유 한 값을
- 24. MySQL 고유 한 해시 삽입
- 25. 이름을 모르는 고유 한 제한 조건을 제거해야합니다.
- 26. 데이터베이스의 값을 고유 한 열로 덮어 씁니다.
- 27. 일대 다 테이블 관계의 고유 한 값?
- 28. 일부 열을 기반으로 한 고유 한 행 선택
- 29. 고유 한 페이지 뷰 추적
- 30. SQL 그룹 고유 한 카운트
@Mitch : 어쩌면 그가 직면 한 케이스 # 10 :-) 당신은 결코 알지 못합니다 .... –
간단히 말해서, 나는 더 많은 옵션을 원합니다. 나는 테이블이 정말로 커질 것이기 때문에 36 대신에 62 개의 문자 옵션을 가지길 기대합니다. abc ... ABC ... 123 ... 또한 필드는 5 문자만을 사용합니다. –
이 게시물은 기본적으로 다른 게시물에 무료입니다 http://stackoverflow.com/questions/1513911/most-efficient-way-to-unique-random-string –