Advertisement
xickoh

trigger bloqueios

Jul 9th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. CREATE TRIGGER preventMessagesBlocked
  2. ON Mensagens
  3. INSTEAD OF INSERT
  4. AS
  5. BEGIN
  6.  
  7. declare @idContacto int;
  8. declare @idConversa int;
  9. declare @corpo VARCHAR(200);
  10. declare @num int;
  11. SELECT @idConversa=idConversa, @idContacto=idContacto, @corpo=corpo FROM inserted;
  12. SELECT @num=count(*) FROM Conversas WHERE idConversa = @idConversa;
  13.  
  14. IF @corpo != '' OR @num<2
  15. BEGIN
  16.  
  17. IF NOT EXISTS (SELECT * FROM bloqueios b JOIN TipoBloqueio t ON t.idBloqueio=b.idBloqueio WHERE b.idContacto=@idContacto AND t.modo='envio')
  18. BEGIN
  19.  
  20. declare @data datetime;
  21. SELECT tempo FROM bloqueios b JOIN TipoBloqueio t ON t.idBloqueio=b.idBloqueio WHERE b.idContacto=@idContacto AND t.modo='envio'
  22.  
  23. IF CAST(@data AS DATETIME) >= GETDATE()
  24. BEGIN
  25. Print 'O contacto está bloqueado';
  26. ROLLBACK TRANSACTION
  27. END
  28. ELSE
  29. BEGIN
  30.  
  31. declare @num int;
  32. SELECT @num=count(*) FROM Conversas WHERE idConversa = @idConversa;
  33.  
  34. IF EXISTS (SELECT * FROM Conversas c JOIN Bloqueios b ON c.idContacto = b.idContacto JOIN tiposBloqueio t ON t.idBloqueio = b.idBloqueio WHERE c.idConversa = @idConversa AND t.modo = 'receção') AND @num=2
  35. BEGIN
  36. Print 'O contacto está a bloqueado';
  37. ROLLBACK TRANSACTION
  38. END
  39.  
  40. ELSE
  41. BEGIN
  42. INSERT INTO Mensagens (idContacto, idConversa, corpo, data) VALUES (@idContacto, @idConversa, @corpo, GETDATE())
  43. END
  44.  
  45. END
  46. END
  47.  
  48. END
  49.  
  50. ELSE
  51. BEGIN
  52. Print 'Não pode enviar mensagens com o corpo vazio';
  53. ROLLBACK TRANSACTION
  54. END
  55.  
  56. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement