Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Triggers

Estas en el tema de Triggers en el foro de Oracle en Foros del Web. Hola, buenas tardes. Estaba intentando hacer un trigger. Lo tengo hecho pero me da errores al compilar según el ISQLPlus (no sé como saber cuales ...
  #1 (permalink)  
Antiguo 20/11/2009, 11:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 14 años, 11 meses
Puntos: 1
Triggers

Hola, buenas tardes. Estaba intentando hacer un trigger. Lo tengo hecho pero me da errores al compilar según el ISQLPlus (no sé como saber cuales son). Lo que quiero que haga este trigger es que en cada alumno que se matricule en una asignatura (una inserción en la tabla asignaturaalumno) aumente el número de matriculados de esa asignatura en la tabla estadística. Aquí está el código

Código:
CREATE TRIGGER aumentamatriculados
AFTER INSERT ON AsignaturasAlumnos
FOR EACH ROW
BEGIN
DECLARE
Matriculados NUMBER
SELECT NUMEROMATRICULADOS
INTO Matriculados
FROM Estadistica
WHERE (Estadistica.codigo_asignatura = :new.codigo_asignatura)
Matriculados = Matriculados + 1
UPDATE Estadistica
SET NUMEROMATRICULADOS = Matriculados
WHERE (Estadistica.codigo_asignatura = :new.codigo_asignatura);
END;

Última edición por LeGeNDuS; 20/11/2009 a las 11:23
  #2 (permalink)  
Antiguo 20/11/2009, 13:07
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Triggers

A ver :

CREATE TRIGGER aumentamatriculados
AFTER INSERT ON AsignaturasAlumnos
FOR EACH ROW
BEGIN
DECLARE
Matriculados NUMBER
SELECT NUMEROMATRICULADOS
INTO Matriculados
FROM Estadistica
WHERE (Estadistica.codigo_asignatura = :new.codigo_asignatura)
Matriculados = Matriculados + 1
UPDATE Estadistica
SET NUMEROMATRICULADOS = Matriculados
WHERE (Estadistica.codigo_asignatura = :new.codigo_asignatura);
END;

De entrada : Para ver los errores teclea SHOW ERR

Y luego...............


El begin y el declare lo tienes mal, pruebalo así :

CREATE TRIGGER aumentamatriculados
AFTER INSERT ON AsignaturasAlumnos
FOR EACH ROW

DECLARE
Matriculados NUMBER;
BEGIN
SELECT NUMEROMATRICULADOS
INTO Matriculados
FROM Estadistica
WHERE (Estadistica.codigo_asignatura = :new.codigo_asignatura)
Matriculados = Matriculados + 1;
UPDATE Estadistica
SET NUMEROMATRICULADOS = Matriculados
WHERE (Estadistica.codigo_asignatura = :new.codigo_asignatura);
END;

Te lo pongo de corrido y no se si te falta tb al final otro END, todo es probar.......
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:14.