[SQL] 여러 열에서 CHECK 제약 조건
SQL여러 열에서 CHECK 제약 조건
나는 2008 SQL 서버 사용
나는 데이터 입력의 유효성을 검사하려고 같은 테이블에 여러 컬럼에 CHECK 제약 조건을 사용합니다.
나는 오류가 발생 :
CHECK 제약 조건은 이런 방식으로 작동하지 않습니다.
FK를 사용하지 않고 하나의 테이블에이를 구현하기위한 다른 방법은?
감사
내 코드의 예 여기
CREATE TABLE dbo.Test
(
EffectiveStartDate dateTime2(2) NOT NULL,
EffectiveEndDate dateTime2(2) NOT NULL
CONSTRAINT CK_CmsSponsoredContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate),
);
해결법
-
==============================
1.예, 테이블 수준의 CHECK 제약 조건을 정의
예, 테이블 수준의 CHECK 제약 조건을 정의
CREATE TABLE foo ( bar int NOT NULL, fred varchar(50) NOT NULL, CONSTRAINT CK_foo_stuff CHECK (bar = 1 AND fred ='fish') )
당신은 열 제약으로 인라인을 선언하는
... fred varchar(50) NOT NULL CONSTRAINT CK_foo_fred CHECK (...) ...
편집, 쉽게 설명보다 게시합니다. 당신의 쉼표를 수정했습니다.
CREATE TABLE dbo.Test ( EffectiveStartDate dateTime2(2) NOT NULL, EffectiveEndDate dateTime2(2) NOT NULL, --need comma CONSTRAINT CK_CmsSponsoredContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate) --no comma );
물론, 질문 남아 당신은 ... 그것이 FK 제약 있어야 할 CHECK 제약 조건을 사용하고 있습니까?
-
==============================
2.점검 제한 조건은 단일 열 또는 전체 기록을 참조 할 수 있습니다.
점검 제한 조건은 단일 열 또는 전체 기록을 참조 할 수 있습니다.
레코드 레벨 제한이 구문을 사용합니다 :
ALTER TABLE MyTable ADD CONSTRAINT MyCheck CHECK (...your check expression...)
-
==============================
3.당신은 단순히 테이블에 트리거에서 유효성 검사를 적용 할 수 있습니다, 특히 검사가 실패 할 경우 작업이 롤백됩니다 어느 쪽이든 그.
당신은 단순히 테이블에 트리거에서 유효성 검사를 적용 할 수 있습니다, 특히 검사가 실패 할 경우 작업이 롤백됩니다 어느 쪽이든 그.
from https://stackoverflow.com/questions/3438066/check-constraint-on-multiple-columns by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 나는 MS Access에서 SQL INTERSECT 및 MINUS 연산을 구현할 수있는 방법 (0) | 2020.05.24 |
---|---|
[SQL] 정렬 첫번째 열 ASC하지만 NULL 값으로? (0) | 2020.05.24 |
[SQL] 여러 행의 마지막 삽입 된 ID를 가져 (0) | 2020.05.24 |
[SQL] SQL에서 어떻게 정수의 최대 값을받을 수 있나요? (0) | 2020.05.24 |
[SQL] SQLite는 자동 증가 기본 키가 아닌 필드 (0) | 2020.05.24 |