안녕하세요!
오늘은 데이터베이스에서 테이블을 만들다가 생긴 00000 – “trigger ‘%s.%s’ is invalid and failed re-validation” 이 오류를 해결하는 과정을 소개해 드리겠습니다!
📍 “trigger ‘%s.%s’ is invalid and failed re-validation”
📌 문제 발생
SQL
-- 테이블 생성 SQL - tbl_user
CREATE TABLE tbl_user
(
user_idx NUMBER(20) NOT NULL,
user_name VARCHAR2(30) NOT NULL,
user_email VARCHAR2(30) NOT NULL,
user_pw VARCHAR2(30) NOT NULL,
user_sign_date DATE DEFAULT SYSDATE NOT NULL,
user_position VARCHAR2(10) DEFAULT '0' NOT NULL,
PRIMARY KEY (user_idx)
);
-- Auto Increment를 위한 Sequence 추가 SQL - tbl_user.user_idx
CREATE SEQUENCE tbl_user_SEQ
START WITH 1
INCREMENT BY 1;
-- Auto Increment를 위한 Trigger 추가 SQL - tbl_user.user_idx
CREATE OR REPLACE TRIGGER tbl_user_AI_TRG
BEFORE INSERT ON tbl_user
REFERENCING NEW AS NEW FOR EACH ROW
BEGIN
SELECT tbl_user_SEQ.NEXTVAL
INTO :NEW.user_idx
FROM DUAL;
END;
INSERT INTO tbl_user (user_email, user_pw, user_name) VALUES ('email', 'pw', 'name');
위의 코드로 테이블을 만들고 생겼던 오류에요.
데이터를 넣던 중 위의 사진처럼 오류 구문이 생기는데요.
이때 00000 뒤에 있는 오류를 봐야 해요.
📌 오류 해석
해석을 해보면 트리거가 유효하지 않고 re-validation에 실패했다고 해요.
그리고 Action을 보면 트리거를 끄거나 삭제하는 방법을 알려주고 있어요.
📌 오류 해결
SQL
-- Auto Increment를 위한 Sequence 추가 SQL - tbl_user.user_idx
CREATE SEQUENCE tbl_user_SEQ
START WITH 1
INCREMENT BY 1;
-- Auto Increment를 위한 Trigger 추가 SQL - tbl_user.user_idx
CREATE OR REPLACE TRIGGER tbl_user_AI_TRG
BEFORE INSERT ON tbl_user
REFERENCING NEW AS NEW FOR EACH ROW
BEGIN
SELECT tbl_user_SEQ.NEXTVAL
INTO :NEW.user_idx
FROM DUAL;
END;
이 문제는 트리거 생성에 대한 구문을 다시 한번 실행해서 해결이 되었어요.
지금까지 데이터베이스에서 00000 – “trigger ‘%s.%s’ is invalid and failed re-validation” 문제 해결하는 방법이었습니다.
다음에도 좋은 정보로 찾아뵙겠습니다.
numeric precision specifier is out of range (1 to 38) 오류 해결