Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/07/2008, 07:56
Avatar de popobcn
popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Respuesta: NOVATO: Problema con Triggers ¿como hacerlo?

Hola!!!

Antetodo muchas gracias por vuestras respuestas... pero creo que me estoy perdiendome un poco... A ver si termino de ver la luz :)

Cita:
SELECT nombre_seq.NEXTVAL
INTO :NEW.id
FROM dual;
No termino de comprender esta parte en concreto:

INTO :NEW.flipi

1. NEW es la variable que definimos inicialmente en el TRIGGER ¿no?
2. .ID corresponde a la columna en la que deseo traspasar el valor de la secuencia?

He intentado adaptar el código y ha quedado tal que así:

Cita:
CREATE OR REPLACE TRIGGER USER.ACTUA_IDS2
BEFORE INSERT
ON USER.TEMAS
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
vvMaxim NUMBER(10);

BEGIN
SELECT TEMAS_SEC.NEXTVAL
INTO :NEW.flipi
FROM DUAL;

END ;
/
Obviamente, FLIPI es el nombre del campo ID que le he dado en Oracle .oO(Uno ya esta algo ciego de mirar el TOAD intentando hacer que funcione esto como para poner nombres coherentes jajajajajajajjaja).

Al compilar el TRIGGER me lanza los siguientes mensajes de error:

Cita:
6/10 PLS-00201: el identificador 'FLIPI' se debe declarar
7/5 PL/SQL: ORA-00904: : identificador no válido
5/5 PL/SQL: SQL Statement ignored
Paralalemente, he logrado que "funcione" a "MEDIAS" el invento, ya que al realizar la actualización de los registros después de la inserción, siempre queda el último registro con un valor nulo en el campo ID... Por lo que no me termina de servir el tema... Este es el código que estoy empleando actualmente:
Cita:
CREATE OR REPLACE TRIGGER ACTU_IDS
BEFORE INSERT
ON TEMAS
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
hijodeputa NUMBER;

BEGIN
SELECT TEMAS_SEC.NEXTVAL
INTO hijodeputa
FROM DUAL; ---TEMAS;

UPDATE TEMAS
SET flipi = hijodeputa
WHERE flipi is null;

END ;
/
Gracias por vuestra ayuda!

Saludos

PD.: Disculpad el nombre de las variables... pero creo que estoy perdiendo ya la poca razón que me quedaba aisssss