PLS-00103: Se encontró el símbolo “SELECT” en Oracle SQL Developer.
Tengo estas tablas:
Member(ID_miembro nombre, apellido)
Perfil(ID_miembro nombre_perfil)
Película(ID_película título, año, productor, promedio_calificación)
Actor(ID_actor, nombre, apellido)
Actuado_en(ID_película, ID_actor)
Visto(ID_miembro, nombre_perfil, ID_película, calificación)
Para cada relación, el o los atributos de la clave primaria están subrayados. Además, se cumplen las siguientes restricciones de clave foránea:
En Perfil,
Clave foránea: ID_miembro hace referencia a Member(ID_miembro)
En Actuado_en,
Clave foránea: ID_película hace referencia a Película(ID_película)
Clave foránea: ID_actor hace referencia a Actor(ID_actor)
En Visto,
Clave foránea: (ID_miembro, nombre_perfil) hace referencia a Perfil(ID_miembro, nombre_perfil)
Clave foránea: ID_película hace referencia a Película(ID_película)
Mi tarea fue: Escribir un trigger que actualice automáticamente el atributo “promedio_calificación” cada vez que se inserte una nueva tupla en Visto. Llegué a esto pero hubo un error al compilar que decía:
PLS-00103: Encontrado el símbolo “SELECT”
create trigger trig1
after insert on Visto
for each row
when (new.ID_película is not null)
begin
update Película
set promedio_calificación = (select avg(W.calificación)
from Visto W
where W.ID_película = new.ID_película);
end;
davy.ai
El problema con el disparador es que hay un error tipográfico en la línea donde se establece la calificación promedio. Debería decir “avg_rating” en lugar de “ava_rating”. El código corregido del disparador es el siguiente:
Este disparador actualizará la calificación promedio para la película en la tabla Película cada vez que se inserte una nueva tupla en la tabla Watch. El disparador recupera la calificación promedio para la película de la tabla Watch y la establece en la fila correspondiente en la tabla Película.