2010-11-30 3 views
0

특정 조건에 따라 새 행 삽입을 제한해야합니다. 삽입 가능한 값이 특정 조건과 일치하지 않으면 데이터베이스에서 예외를 throw해야합니다. 먼저 CONSTRAINT 객체를 사용하려고했지만 다음 오류가 발생했습니다. "SQLException : 기능이 지원되지 않습니다 : 문에서 check 제약 조건의 하위 쿼리".HSQLDB의 특정 조건에 삽입을 파기 할 수 있습니까?

은 (new.simvol가 null) SIGNAL SQL_STATE '45000'

WHEN 각 행 NEW ROW AS 새로운 을 참조 화폐 교환 가치 ON INSERT 전에 트리거 tg_val 생성 :

그러면 I 트리거를 사용하려

그리고 또 다른 오류가 발생했습니다 : SQLException : 예기치 않은 토큰 : SIGNAL.

답변

0

이 오류는 사용 된 HSQLDB 버전이이 컨텍스트에서 SIGNAL 문을 지원하지 않음을 나타냅니다.

CREATE TRIGGER tg_val BEFORE INSERT ON valuta REFERENCING NEW ROW AS new FOR EACH ROW WHEN (new.simvol IS NULL) SIGNAL SQLSTATE '45000' 

그것은 당신이 원하는 하위 쿼리와 체크 제약 조건을 사용하도록 시도에서 분명하다 : (순간 RC2에서) HSQLDB 2.0.1은 SQLSTATE와 (같은 현재 설명서에 언급 SQL_STATE되지 않음)이 지원 NOT NULL 제한 조건보다 더 복잡한 점검 조건을 사용하십시오. 이 경우 트리거를 위해 BEGIN ... END 블록을 사용하여 다른 테이블 (대상 테이블 포함)에서 SELECT 문을 수행하여 조건을 확인하십시오.

관련 문제