오라클 트리거 오류 좀 부탁해요. 0 1 1,076

by 박인천 [PL/SQL] tigger error [2020.10.28 11:29:59]


CREATE TRIGGER RAISE_SALARY

AFTER INSERT ON EMPLOYEE

REFERENCING NEW AS newEmployee

FOR EACH ROW

BEGIN

WHEN (newEmployee.SALARY < 1500000)

UPDATE EMPLOYEE

SET newEmployee.SALARY = SALARY * 1.1

WHERE EMPNO = newEmployee.EMPNO;

END;

 

오류내용

오류(3,33): PLS-00103: 심볼 ";"를 만났습니다 다음 중 하나가 기대될 때: ( begin case declare end exception exit for goto if loop mod null pragma raise return select update while with

by 마농 [2020.10.28 13:02:12]

1. 구문 오류 : NEW 앞에 콜론(:)이 붙어야 합니다.
 - 변경전 :  newEmployee.EMPNO
 - 변경후 : :newEmployee.EMPNO
2. 구문 오류 : WHEN 절의 위치 오류
 - 변경전 : BEGIN WHEN ()
 - 변경후 : WHEN () BEGIN
3. 논리적 오류
 - 트리거 안에서 다시 해당 테이블을 조회하거나 갱신 할 수 없습니다.
 - 해당 테이블을 다시 업데이트 한다고 생각하지 마세요.
 - 단순하게 해당 값 자체를 바꿔주면 됩니다.
 - 단 AFTER 가 아닌 BEFORE 로 동작해야 합니다.

CREATE OR REPLACE TRIGGER raise_salary
BEFORE INSERT ON employee
REFERENCING NEW AS newEmployee
FOR EACH ROW
WHEN (newEmployee.salary < 1500000)
BEGIN
    :newEmployee.salary := :newEmployee.salary * 1.1;
END;
/

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입