2014-07-14 6 views
0

date 열이있는 테이블을 생성합니다. 날짜가 미래에 있는지 확인하기 위해 check 제약 조건을 추가하고 싶습니다.날짜에 제약 조건 확인

create table test_table (
    schedule_date date not null, 
    check (schedule_date >= TODAY) 
); 

위의 구문 오류가 발생합니다.

09:43:37 [CREATE - 0 row(s), 0.000 secs] [Error Code: -201, SQL State: 42000] A syntax error has occurred. 
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.000/0.000 sec [0 successful, 0 warnings, 1 errors] 

날짜 열에 제약 조건을 어떻게 추가합니까?

+0

오류는 정확히 무엇입니까? – Jonny

+0

오류가 – usha

답변

3

보십시오. 공식 문서에서 알 수 있듯이 :

검사 제약 조건은 검색 조건을 사용하여 정의됩니다. 검색 조건에는 사용자 정의 루틴, 부속 조회, 집계, 호스트 변수 또는 ROWID를 포함 할 수 없습니다. 또한 조건에 변형 내장 함수 CURRENT, USER, SITENAME, DBSERVERNAME 또는 TODAY를 포함 할 수 없습니다.

솔루션은 삽입/업데이트 트리거를 사용할 수 있다고 생각합니다.

0

확인하려면 informix db가 없지만 쉼표가 불필요하며 구문 오류가 발생한다고 생각합니다.

당신은 점검 제한 조건에 오늘 사용할 수 없습니다

create table test_table (
    schedule_date date not null CHECK (schedule_date >= TODAY) 
); 
+0

인 질문이 업데이트되었습니다. 여전히 같은 오류가 발생합니다. – usha

1

Copilot이 말한 것처럼 Informix에서는 허용되지 않습니다. 다른 RDBMS에서 허용하는 경우 놀랄 것입니다.

당신이 생각할 때 내재 된 똑딱 거리는 시한 폭탄이 분명해야합니다. 삽입 된 행은 제약 조건을 충족하지만 시간이 지남에 따라 제약 조건이 실패합니다. 엔진이 그걸 어떻게 신고합니까?

용액은 다음 중 하나

  • 삽입되는 행을 만들어야하는 프로그램이 미리 검증 또는
  • 은 소성시 유효성을 검사하는 과정을 실행하는 삽입 트리거를 생성 할 책임이 행이 실패한 경우 적절한 오류를 발생 시키십시오.