2009-02-25 4 views
6

나는 그렇게 할 수있는 방법, 당신은 결말, 내가 upperlimitlowerlimit보다 큰 경우 확인하려면 가까이에서 볼 수 있듯이SQL의 두 열 사이에 체크 제약 조건을 만드는 방법은 무엇입니까?

CREATE TABLE bp (
    bpid  VARCHAR(5), 
     FOREIGN KEY (bpid) REFERENCES designation(desigid), 
    upperlimit DECIMAL(10,2) NOT NULL, 
    lowerlimit DECIMAL(10,2) NOT NULL, 
    increment DECIMAL(10,2) NOT NULL 
     CONSTRAINT llvalid CHECK (upperlimit > lowerlimit) 
); 

으로 기본 급여 (BP) 테이블을 만들려고하고 있어요?

답변

6

아마도 사용하는 데이터베이스에 따라 다를 수 있습니다.

(예를 들어 여기 : http://www.techonthenet.com/oracle/check.php를) 오라클 구문을 비교, 당신은 ','NULL 및 CONSTRAINT 사이에있을 수없는 무엇

+0

예! 그게, 고마워 :) – Unknown

+0

나는 똑같은 실수를 저질 렀다. 고마워 :) +1 – Pavitar

1
다음

SQL 쿼리 적절한의 ...

CREATE TABLE bp (bpid VARCHAR(5), 
FOREIGN KEY (bpid) REFERENCES designation(desigid), 
upperlimit DECIMAL(10,2) NOT NULL, 
lowerlimit DECIMAL(10,2) NOT NULL, 
increment DECIMAL(10,2) NOT NULL, 
CONSTRAINT llvalid CHECK (upperlimit > lowerlimit)); 

주 NOT NULL 뒤의 콤마와 마지막 줄의 CONSTRAINT.

1

문제는 사용자가 열 수준 제약 조건으로 정의했지만 다른 열을 참조한다는 것입니다. 테이블 수준에서 제약 조건을 정의해야합니다.

ALTER TABLE bp 
    ADD CONSTRAINT CK_limit CHECK (upperlimit > lowerlimit) 
+0

왜? 어떤 차이가 있습니까? – Unknown

관련 문제