Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TRIGGER preventMessagesBlocked
- ON Mensagens
- INSTEAD OF INSERT
- AS
- BEGIN
- declare @idContacto int;
- declare @idConversa int;
- declare @corpo VARCHAR(200);
- declare @num int;
- SELECT @idConversa=idConversa, @idContacto=idContacto, @corpo=corpo FROM inserted;
- SELECT @num=count(*) FROM Conversas WHERE idConversa = @idConversa;
- IF @corpo != '' OR @num<2
- BEGIN
- IF NOT EXISTS (SELECT * FROM bloqueios b JOIN TipoBloqueio t ON t.idBloqueio=b.idBloqueio WHERE b.idContacto=@idContacto AND t.modo='envio')
- BEGIN
- declare @data datetime;
- SELECT tempo FROM bloqueios b JOIN TipoBloqueio t ON t.idBloqueio=b.idBloqueio WHERE b.idContacto=@idContacto AND t.modo='envio'
- IF CAST(@data AS DATETIME) >= GETDATE()
- BEGIN
- Print 'O contacto está bloqueado';
- ROLLBACK TRANSACTION
- END
- ELSE
- BEGIN
- declare @num int;
- SELECT @num=count(*) FROM Conversas WHERE idConversa = @idConversa;
- 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
- BEGIN
- Print 'O contacto está a bloqueado';
- ROLLBACK TRANSACTION
- END
- ELSE
- BEGIN
- INSERT INTO Mensagens (idContacto, idConversa, corpo, data) VALUES (@idContacto, @idConversa, @corpo, GETDATE())
- END
- END
- END
- END
- ELSE
- BEGIN
- Print 'Não pode enviar mensagens com o corpo vazio';
- ROLLBACK TRANSACTION
- END
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement