Usuário com melhor resposta
Como calcular média entre dois campos num Trigger?

Pergunta
-
Olá,
Estou criando tentando criar um trigger para pegar dois campos, encontrar a média e jogá-la num terceiro campo. Apesar de conseguir encontrar a média, quando tento inseri-la o único resultado que consigo é nulo. Vou deixar aqui o trigger:
create trigger adcMedia on Notas after insert, update as begin declare @nt1 float, @nt2 float, @media float, @cod_aluno varchar(5), @cod_discp varchar(5) select @cod_aluno = cod_aluno, @cod_discp = cod_discp, @nt1 = nota1, @nt2 = nota2 from inserted if (@nt1 != null or @nt2 != null) begin set @media = (@nt1 + @nt2)/2) update Notas set media = @media where cod_aluno = @cod_aluno and cod_discp = @cod_discp end end
Toda ajuda é bem vinda!
Obrigada.
- Editado Artemilis quarta-feira, 26 de novembro de 2014 12:26
Respostas
-
-
-
-
-
Artemilis,
Se estas colunas estão na mesma tabela onde é disparada a trigger, a melhor solução é criar uma coluna computada.
Veja como criar uma coluna computada para sua tabela:
ALTER TABLE dbo.TB_SuaTabela ADD CD_MEDIA AS ((Nota1 + Nota2) /2); GO
Para maiores informações sobre colunas computadas veja:
http://technet.microsoft.com/pt-br/library/ms188300(v=sql.110).aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Artemilis quarta-feira, 26 de novembro de 2014 13:02
Todas as Respostas
-
-
-
-
-
-
-
Artemilis,
Se estas colunas estão na mesma tabela onde é disparada a trigger, a melhor solução é criar uma coluna computada.
Veja como criar uma coluna computada para sua tabela:
ALTER TABLE dbo.TB_SuaTabela ADD CD_MEDIA AS ((Nota1 + Nota2) /2); GO
Para maiores informações sobre colunas computadas veja:
http://technet.microsoft.com/pt-br/library/ms188300(v=sql.110).aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Artemilis quarta-feira, 26 de novembro de 2014 13:02
-
Artemilis, eis uma sugestão para o procedimento trigger:
-- código 1 create trigger adcMedia on Notas after insert, update as begin UPDATE N set media= (IsNull(I.nota1, 0) + IsNull(I.nota2, 0)) / 2. from Notas as N inner join Inserted as I on N.cod_aluno = I.cod_aluno and N.cod_discp = I.cod_discp where I.nota1 is not null or I.nota2 is not null; end;
-
Artemilis,
Se estas colunas estão na mesma tabela onde é disparada a trigger, a melhor solução é criar uma coluna computada.
Veja como criar uma coluna computada para sua tabela:
ALTER TABLE dbo.TB_SuaTabela ADD CD_MEDIA AS ((Nota1 + Nota2) /2); GO
É uma ótima solução, mas realmente tenho que fazer isso usando uma trigger.