Trigger con secuenciador

Hola experto:
Estoy programando en VB6 con base de datos Oracle 9i, mi problema es que necesito insertar datos a una tabla que se genere números automáticamente, como el autonemerico del Access, que me permite utilizar estos número como llave de la tabla. Estoy utilizando el ADO como conexión, mi problema es como tengo enviar los comandos para que se incremente automáticamente ese campo, tengo referencias de un trigger, pero al crear el trigger tengo el siguiente problema:
Mi secuencia esta creada así:
create sequenciador "juan"."sec_p_c" increment by 1 start with 1
maxvalue 1.0e28 minvalue 1 cycle
cache 20 noorder
Mi trigger se ha creado así:
CREATE OR REPLACE TRIGGER "JUAN"."TRI_P_C" BEFORE
INSERT ON "PRI_CONTRIBUYENTES" FOR EACH ROW
BEGIN
:NEW.NUM_SEC := SEC_P_C.NEXTVAL;
END;
LA ESTRUCTURA DE MI TABLA PRI_CONTRIBUYENTES ES:
NUM_SEC NUMBER 10 NOT NULL
AP_PATERNO VARCHAR2(20) , ....
EL CAMPO NUM_SEC LLAVE UNICA
EL PROBLEMA ES CUANDO EJECUTO O COMPILO EL TRIGGER DA EL SIGUIENTE ERROR:
Número de Línea = 2 Número de Columna = 25 Texto de Error = PLS-00357: Table,View Or Sequence reference 'SEC_P_C.NEXTVAL' not allowed in this context
Número de Línea = 2 Número de Columna = 1 Texto de Error = PL/SQL: Statement ignored
Quisiera que me ayudes, tal vez hay que definir otros parámetros para que los triguer acepten los comandos de nextval entre el begin, no se.
CUANDO HAGO UN INSERT ME SALE UN ERROR:
ORA-04098: Trigger ?JUAN.TRI_P_C? Is invalid and failed re-valitation
Cuando elimino el trigger me permite ingresar datos.
Te estaré agradecido por siempre. Jantezana

1 Respuesta

Respuesta
1
Prueba esto a ver:
Create or replace trigger
Juan."Tri_p_c"
BEFORE
INSERT ON pri_contribuyentes FOR EACH ROW BEGIN
SELECT juan.sec_p_c.NEXTVAL INTO :NEW.num_sec
FROM DUAL;
END;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas