2012-02-18 2 views
0

트리거는 생년월일을 입력하기 전에 사망 날짜를 중지해야합니다.SQL orcl10g 트리거 삽입 (deathDate after birthDate)

CREATE TRIGGER Check_deathDate 
BEFORE INSERT Or UPDATE of deathDate on Actor 
FOR EACH ROW 
DECLARE 
deathDate   DATE; 
birthDate   DATE; 
deathDate_Error  EXCEPTION; 
IF (deathDate < birthDate) THEN 
RAISE deathDate_Error; 
END IF; 
EXCEPTION 
WHEN deathDate_Error THEN 
Raise_application_error('deathDate' || 'should be before' || 'birthDate'); 
END;); 

라인 3에서 ...

* 오류를 오류가 있습니다 : ORA-04079 : 잘못된 트리거 사양을

... 어떻게 다른 내가 IF를에서 지정할 수

? 이 같은

답변

2

뭔가 :

CREATE TRIGGER Check_deathDate 
BEFORE INSERT Or UPDATE of deathDate, birthDate on Actor 
FOR EACH ROW 
BEGIN 
    IF (:NEW.deathDate < :NEW.birthDate) THEN 
     Raise_application_error(-20000, 'deathDate should be before birthDate'); 
    END IF; 
END; 
/
5

당신은 트리거 대신 점검 제한 조건을 사용할 수 있습니다. 제약 조건은 트리거보다 강력하지만 일반적으로 더 간단하고 빠릅니다.

alter table actor add 
constraint actor_birth_before_death check (birthDate <= deathDate); 
+0

+1, 방아쇠 (편집 btw에 대한 감사)보다 훨씬 나은 접근 방식입니다. –