예를 들어 MS SQL Server 2008의 varchar 열에 대해 4 개의 고유 값을 지정하는 방법이 있습니까?
예를 들어 가능한 값으로 ‘매일’, ‘주간’, ‘월간’, ‘연간’만 허용하는 빈도 (varchar)라는 열이 필요합니다.
테이블을 만들 때 SQL Server Management Studio 내에서 설정할 수 있습니까?
답변
check constraint
값을 제한하는 해당 열에 대한 추가를 이미 살펴 보셨습니까 ? 다음과 같은 것 :
CREATE TABLE SomeTable
(
Id int NOT NULL,
Frequency varchar(200),
CONSTRAINT chk_Frequency CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly'))
)
답변
검사 제약을 원합니다 .
CHECK 제약 조건은 다른 열의 데이터를 기반으로하지 않는 논리식에서 유효한 값을 결정합니다. 예를 들어 급여 열의 값 범위는 $ 15,000에서 $ 100,000 사이의 데이터 만 허용하는 CHECK 제약 조건을 만들어 제한 할 수 있습니다. 이것은 급여가 정규 급여 범위를 넘어서 입력되는 것을 방지합니다.
다음과 같은 것을 원합니다.
ALTER TABLE dbo.Table ADD CONSTRAINT CK_Table_Frequency
CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly'))
위의 링크에 설명 된대로 스칼라 함수를 사용하여 검사 제약 조건을 구현할 수도 있습니다.
답변
개인적으로 나는 그것을 tinyint로 코딩하고 :
- 둘 중 하나 : 클라이언트에서 텍스트로 변경하고 1과 4 사이의 제약 조건을 확인하십시오.
- 또는 : 외래 키가있는 조회 테이블 사용
원인:
-
텍스트를 저장하는 데 평균 8 바이트, tinyint의 경우 1 바이트가 걸립니다. 수백만 행 이상이 차이를 만들 것입니다.
-
데이터 정렬은 어떻습니까? “Daily”는 “DAILY”와 동일합니까? 이러한 종류의 비교를 수행하려면 리소스가 필요합니다.
-
마지막으로 “격주”또는 “매시간”을 추가하려면 어떻게해야합니까? 조회 테이블에 새 행을 추가 할 수있을 때 스키마 변경이 필요합니다.
답변
테이블을 편집 할 때
마우스 오른쪽 버튼을 클릭-> 제약 조건 확인-> 추가-> Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')
표현식 필드에 입력하고 (이름) 필드에 좋은 제약 이름을 입력합니다.
완료되었습니다.