Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/04/2016, 22:55
jultrun121
 
Fecha de Ingreso: enero-2011
Mensajes: 38
Antigüedad: 13 años, 3 meses
Puntos: 0
trigger. update antes de lanzar un error

tengo este trigger para evitar que se inserte como amigo
a si mismo
juan juan
o una amistad que ya exista pero alrevez
juan pedro
pedro juan
pero al momento de esta ultima también se debe cambiar el estado de 0 a 1(confirmacion de amistad). me salta el error pero no se actualiza la fila,
si le quito el lanzamiento si lo hace
create or replace TRIGGER amigot
BEFORE INSERT ON AMIGO
FOR EACH ROW
DECLARE
amigo_error EXCEPTION;
id_amigo INT;
BEGIN
IF :NEW.USUARIO1=:NEW.USUARIO2 THEN
RAISE amigo_error;
END IF;
SELECT ID INTO id_amigo FROM AMIGO WHERE USUARIO1=:NEW.USUARIO2 AND USUARIO2=:NEW.USUARIO1;
IF id_amigo IS NOT NULL THEN
update AMIGO SET ESTADO=1 where ID=id_amigo;
RAISE amigo_error;
END IF;
EXCEPTION
WHEN amigo_error THEN
RAISE_APPLICATION_ERROR (-20201,'amistad invalidad');

END;