저는 Oracle을 배우고 before 트리거를 구현하려고합니다. 내가 올바른 코드를 가지고 생각하지만 일단 트리거를 호출하거나 가져 오지 않는 삽입 문을 실행하지만, 행은 여전히 테이블에 삽입됩니다. 아무도 내가 뭘 잘못하고 있는지 알 수 없으며 방아쇠가 작동하지 않는 이유를 알고 있습니까? SQL before 트리거가 작동하지 않습니다.
이
내가이 나는 날이insert into ad_slot values (78955, 'testday', 'ER', 'House', 'Taken', 7654321, '05=FEB-2014 21:00:00');
테스트 케이스 유효하지 않은 한, 그것은 예외를 발생한다으로 테스트하고 삽입 성명
create or replace
TRIGGER DAY_CHECK BEFORE
INSERT ON AD_SLOT FOR EACH ROW DECLARE p_day AD_SLOT.DAY_OF_WEEK%TYPE;
NOTVALID EXCEPTION;
BEGIN
IF p_day IN ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday') THEN
DBMS_OUTPUT.PUT_LINE('VALID DAY');
ELSE
RAISE NOTVALID;
END IF;
EXCEPTION
WHEN NOTVALID THEN
DBMS_OUTPUT.PUT_LINE('NOT A VALID DAY');
RAISE;
END;
을 사용하고있는 트리거입니다 중고
INSERT INTO ad_slot (DAY_OF_WEEK) VALUES ('unwanted day');
'p_day'에 값을 할당하지 마십시오. 또한 트리거에서'commit' 또는 rollback'을 사용할 수 없습니다. –
사용자가 입력 한 값에 어떻게 할당합니까? – Hayes121
또는 'day_of_week을 p_day from ad_slot'으로 선택 하시겠습니까? – Hayes121