2012-03-26 7 views
0

SQL Anywhere 9.0에서 일부 제약 조건을 공식화하려고합니다.Sybase Check 제약 조건 평가

기본적으로 나는이 같은 스키마를 가지고 : 나는 테이블에있는 대부분의 계산에있을 각 제한에 대한 제약 my_number을 강제하기 위해 노력하고있어

CREATE TABLE limits (
    id INT IDENTITY PRIMARY KEY, 
    count INT NOT NULL 
); 

CREATE TABLE sum (
    user INT, 
    limit INT, 
    my_number INT NOT NULL CHECK(my_number > 0), 
    PRIMARY KEY (user, limit) 
); 

.

나는

CHECK (((SELECT sum(my_number) FROM sum WHERE limit = limit) + my_number) <= (SELECT count FROM limits WHERE id = limit)) 

CHECK ((SELECT sum(my_number) FROM sum WHERE limit = limit) <= (SELECT count FROM limits WHERE id = limit)) 

을 시도하고 그들 모두가 올바른 일을하지 않는 것 같다. 둘 다 하나씩 꺼져 있습니다. (음수를 얻으면 삽입은 실패하지만 그 전에는 실패합니다.)

제 질문은이 서브 쿼리가 실행되는 테이블의 버전이 무엇입니까? 테이블이 삽입되기 전에 일관성 검사를 수행합니까?

답변

0

이 도움말 항목을 기반으로 여기에서 시행하려는 내용을 이해하지 못합니다.

Using CHECK constraints on columns

CHECK 조건이 설정되면 이후 값은 행 수정 전에 조건에 대해 으로 평가됩니다.

나는 삽입 트리거 이전에 갈 것입니다. 더 많은 옵션이 있으며 더 나은 오류 메시지를 표시 할 수 있습니다.