Skip to content

Add files via upload #6

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
82 changes: 50 additions & 32 deletions sql/triggers.sql
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ DELIMITER //
CREATE OR REPLACE TRIGGER RN_4_02_ConversacionesSoloVinculosActivos
BEFORE INSERT ON conversaciones FOR EACH row
begin
if (estadoVinculo(NEW.))

if ()

DELIMITER ;

Expand Down Expand Up @@ -131,6 +130,7 @@ CREATE OR REPLACE TRIGGER RN_2_01_ConsitenciaFechasVinculoAmistad
-- usuario aceptante y solicitante??
END //
DELIMITER ;

DELIMITER //
CREATE OR REPLACE TRIGGER RN_2_01_ConsitenciaFechasVinculoAmistadU
AFTER update ON vinculos FOR EACH row
Expand Down Expand Up @@ -174,44 +174,62 @@ CREATE OR REPLACE TRIGGER RN_2_03_Derivacion_atributo_vinculoActivo
DELIMITER ;

DELIMITER //
CREATE OR REPLACE TRIGGER RN_2_04_Limitacion_de_vinculos_entre_dos_usuarios
BEFORE INSERT ON vinculos FOR EACH ROW
CREATE OR REPLACE TRIGGER RN_3_02_b_Autoexclusion_en_vinculos
BEFORE INSERT ON vinculos FOR EACH row
begin
if(numeroVinculosActivosDeUsuario(NEW.usuarioid1, NEW.usuarioid2) > 1) then
if(NEW.usuarioid1 = NEW.usuarioid2) then
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT =
'Dos usuarios no pueden tener mas de un vinculo activo entre ellos dos';
END if;
END//
'RN_3_02_b: Un usuario no puede crear un vinculo consigo mismo';
END if;
END//
DELIMITER ;

DELIMITER //
CREATE OR REPLACE TRIGGER RN_2_05_Usuarios_activos_para_creacion_de_vinculos
BEFORE INSERT ON vinculos FOR EACH row
CREATE OR REPLACE TRIGGER RN_2_01_ConsitenciaFechasVinculoAmistadU
AFTER UPDATE ON vinculos FOR EACH row
begin
if(usuarioActivo(NEW.usuarioid1) = FALSE) then
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT =
'Un usuario inactivo no puede enviar una solicitud de vinculo';
END if;
END//
DECLARE fechaAceptacion ROW TYPE of vinculos;
DECLARE fechaRevoacion ROW TYPE of vinculos;
DECLARE estadoSolicitud ROW TYPE of vinculos;
DECLARE estadoVinculo ROW TYPE of vinculos;
if (NEW.fechaAceptacion IS NULL AND NEW.fechaRevocacion IS NULL) then
SET estadoVinculo = 'Inactivo';
SET estadoSolicitud = 'Pendiente';
END if;
if (NEW.fechaAceptacion IS NOT NULL AND NEW.fechaRevocacion IS NULL) then
SET estadoVinculo = 'Activo';
SET estadoSolicitud = 'Aceptado';
END if;
if (NEW.fechaAceptacion IS NOT NULL AND NEW.fechaRevocacion IS NOT NULL) then
SET estadoVinculo = 'Inactivo';
SET estadoSolicitud = 'Aceptado';
END if;
END //
DELIMITER ;

DELIMITER //
CREATE OR REPLACE TRIGGER RN_2_05_Usuarios_activos_para_creacion_de_vinculos_aceptante
BEFORE INSERT ON vinculos FOR EACH row
begin
if(usuarioActivo(NEW.usuarioid2) = FALSE) then
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT =
'Un usuario inactivo no puede aceptar una solicitud de vinculo';
END if;
END//
CREATE OR REPLACE TRIGGER RN_2_04_Limitacion_de_vinculos_entre_dos_usuarios
BEFORE INSERT ON vinculos FOR EACH ROW
begin
if(numeroVinculosActivosDeUsuario(NEW.usuarioid1, NEW.usuarioid2) > 1) then
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT =
'Dos usuarios no pueden tener mas de un vinculo activo entre ellos dos';
END if;
END//
DELIMITER ;

DELIMITER //
CREATE OR REPLACE TRIGGER RN_3_02_b_Autoexclusion_en_vinculos
BEFORE INSERT ON vinculos FOR EACH row
begin
if(NEW.usuarioid1 = NEW.usuarioid2) then
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT =
'RN_3_02_b: Un usuario no puede crear un vinculo consigo mismo';
END if;
END//
DELIMITER ;
CREATE OR REPLACE TRIGGER RN_2_05_SoloUsuariosActivos
BEFORE INSERT ON vinculos FOR EACH ROW
BEGIN
if (usuarioActivo(NEW.usuarioId1) = FALSE) then
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT 'Solo los usuarios que esten activos pueden enviar solicitudes de amistad y aceptarlas.';
END if;
END//
DELIMITER ;