Advertisement
jpablo903

punto2

Jun 20th, 2024
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.34 KB | None | 0 0
  1. -- PUNTO 2
  2.  
  3. CREATE OR ALTER TRIGGER TR_InsertarFotografia ON Fotografias
  4. INSTEAD OF INSERT
  5. AS BEGIN
  6.     BEGIN TRY
  7.         BEGIN TRANSACTION
  8.             DECLARE @IDParticipante BIGINT
  9.             DECLARE @IDConcurso BIGINT
  10.             DECLARE @IDFotografia BIGINT
  11.             DECLARE @Titulo VARCHAR(150)
  12.             DECLARE @Descalificada BIT
  13.             DECLARE @Publicacion DATE
  14.             DECLARE @RankingMinimo DECIMAL(5,2)
  15.             DECLARE @RankingParticipante DECIMAL(5,2)
  16.             DECLARE @FechaInicio DATE
  17.             DECLARE @FechaFin DATE
  18.  
  19.             SELECT @IDFotografia = i.ID,
  20.                     @IDConcurso = i.IDConcurso,
  21.                     @IDParticipante = i.IDParticipante,
  22.                     @Titulo = i.Titulo,
  23.                     @Descalificada = i.Descalificada,
  24.                     @Publicacion = i.Publicacion
  25.             FROM inserted i
  26.  
  27.             SELECT @RankingMinimo = RankingMinimo, @FechaInicio = Inicio, @FechaFin = Fin FROM Concursos WHERE ID = @IDConcurso
  28.  
  29.             IF @RankingMinimo = 0.0 BEGIN
  30.                 INSERT INTO Fotografias (ID, IDParticipante, IDConcurso, Titulo, Descalificada, Publicacion)
  31.                 VALUES (@IDFotografia, @IDParticipante, @IDConcurso, @Titulo, @Descalificada, @Publicacion )
  32.             END
  33.  
  34.             SELECT @RankingParticipante = COALESCE(AVG(ISNULL(Puntaje)), 0) FROM Votaciones V LEFT JOIN Fotografias F  
  35.             ON V.IDFotografia = F.ID
  36.             WHERE F.IDParticipante = @IDParticipante
  37.  
  38.             IF @RankingParticipante < @RankingMinimo BEGIN
  39.                 RAISERROR('El ranking del participante es inferior al ranking minino del concurso', 16, 0)
  40.             END
  41.  
  42.             IF @FechaInicio > GETDATE() BEGIN
  43.                 RAISERROR ('No puede inscribir una fotografia que aun no comenzo', 16, 0)
  44.             END
  45.  
  46.             IF  @FechaFin < GETDATE() BEGIN
  47.                 RAISERROR ('No puede inscribir una fotografia a un concurso finalizado', 16, 0)
  48.             END
  49.  
  50.             INSERT INTO Fotografias (ID, IDParticipante, IDConcurso, Titulo, Descalificada, Publicacion)
  51.             VALUES (@IDFotografia, @IDParticipante, @IDConcurso, @Titulo, @Descalificada, GETDATE() )
  52.         COMMIT TRANSACTION
  53.     END TRY
  54.     BEGIN CATCH
  55.         PRINT ERROR_MESSAGE()
  56.         ROLLBACK TRANSACTION
  57.     END CATCH  
  58. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement