Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- PUNTO 2
- CREATE OR ALTER TRIGGER TR_InsertarFotografia ON Fotografias
- INSTEAD OF INSERT
- AS BEGIN
- BEGIN TRY
- BEGIN TRANSACTION
- DECLARE @IDParticipante BIGINT
- DECLARE @IDConcurso BIGINT
- DECLARE @IDFotografia BIGINT
- DECLARE @Titulo VARCHAR(150)
- DECLARE @Descalificada BIT
- DECLARE @Publicacion DATE
- DECLARE @RankingMinimo DECIMAL(5,2)
- DECLARE @RankingParticipante DECIMAL(5,2)
- DECLARE @FechaInicio DATE
- DECLARE @FechaFin DATE
- SELECT @IDFotografia = i.ID,
- @IDConcurso = i.IDConcurso,
- @IDParticipante = i.IDParticipante,
- @Titulo = i.Titulo,
- @Descalificada = i.Descalificada,
- @Publicacion = i.Publicacion
- FROM inserted i
- SELECT @RankingMinimo = RankingMinimo, @FechaInicio = Inicio, @FechaFin = Fin FROM Concursos WHERE ID = @IDConcurso
- IF @RankingMinimo = 0.0 BEGIN
- INSERT INTO Fotografias (ID, IDParticipante, IDConcurso, Titulo, Descalificada, Publicacion)
- VALUES (@IDFotografia, @IDParticipante, @IDConcurso, @Titulo, @Descalificada, @Publicacion )
- END
- SELECT @RankingParticipante = COALESCE(AVG(ISNULL(Puntaje)), 0) FROM Votaciones V LEFT JOIN Fotografias F
- ON V.IDFotografia = F.ID
- WHERE F.IDParticipante = @IDParticipante
- IF @RankingParticipante < @RankingMinimo BEGIN
- RAISERROR('El ranking del participante es inferior al ranking minino del concurso', 16, 0)
- END
- IF @FechaInicio > GETDATE() BEGIN
- RAISERROR ('No puede inscribir una fotografia que aun no comenzo', 16, 0)
- END
- IF @FechaFin < GETDATE() BEGIN
- RAISERROR ('No puede inscribir una fotografia a un concurso finalizado', 16, 0)
- END
- INSERT INTO Fotografias (ID, IDParticipante, IDConcurso, Titulo, Descalificada, Publicacion)
- VALUES (@IDFotografia, @IDParticipante, @IDConcurso, @Titulo, @Descalificada, GETDATE() )
- COMMIT TRANSACTION
- END TRY
- BEGIN CATCH
- PRINT ERROR_MESSAGE()
- ROLLBACK TRANSACTION
- END CATCH
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement