Error de Oracle 10g: Advertencia: Desencadenador creado con errores de compilación.
He creado una base de datos donde quiero incrementar automáticamente la clave primaria. Intenté activarla, pero recibí el error anterior.
Aquí está la descripción de mi tabla:
SQL> desc users
Nombre No Nulo Tipo
----------------------------------------- -------- ----------------------------
USER_ID NOT NULL NUMBER(8)
FIRST_NAME NOT NULL VARCHAR2(50)
LAST_NAME NOT NULL VARCHAR2(50)
CITY VARCHAR2(20)
COUNTRY VARCHAR2(20)
PASSWORD NOT NULL VARCHAR2(16)
EMAIL_ID NOT NULL VARCHAR2(50)
Cuando intento activarla, obtengo el siguiente error:
CREATE SEQUENCE SYSTEM.MYSEQ
2 INICIO CON 1
3 VALORMÁXIMO 99999999
4 VALORMÍNIMO 1
5 NOCICLO
6 CACHÉ 20
7 NOORDEN;
CREATE OR REPLACE TRIGGER TR_USERS BEFORE INSERT ON USERS PARA CADA FILA
2 BEGIN SELECT LPAD(LTRIM(RTRIM(TO_CHAR(MYSEQ.NEXTVAL))),10,'0') INTO :NEW.USER_ID FROM DUAL;
3 /
Por favor, ayúdame a resolver este error.
davy.ai
Parece que el error que estás obteniendo no se menciona en tu pregunta. Sin embargo, una posible solución a tu problema podría ser modificar el código del disparador de la siguiente manera:
CREATE OR REPLACE TRIGGER TR_USERS
BEFORE INSERT ON USERS
FOR EACH ROW
BEGIN
SELECT MYSEQ.NEXTVAL INTO :NEW.USER_ID FROM DUAL;
END;
Este desencadenador asignará automáticamente el siguiente valor de secuencia a la columna USER_ID cada vez que se inserte un nuevo registro en la tabla USERS. Asegúrate de que el nombre de la secuencia sea correcto y que se haya creado antes del disparador. Además, asegúrate de que el disparador se haya creado con la sintaxis y los privilegios correctos.