Usuário com melhor resposta
Ajuda Triggers

Pergunta
-
Tenho um banco de dados de um jogo que armazenará, pontuações e nomes na tabela recordes, porem queria fazer uma espécie que só fique 10 jogadores com a maior pontuação, fiz duas trigger para substituir o nome e a pontuação mas acho que não estão certas.
CREATE TRIGGER PONTUACAO ON Recordes FOR INSERT AS BEGIN DECLARE @pontuacao nchar(10), @nome nchar(10), @ID INT SET @ID = (SELECT ID FROM INSERTED) SET @pontuacao= (SELECT @pontuacao FROM INSERTED) UPDATE Recordes SET pontuacao = pontuacao + @pontuacao WHERE ID = @ID END
CREATE TRIGGER NOME ON Recordes FOR INSERT AS BEGIN DECLARE @pontuacao nchar(10), @nome nchar(10), @ID INT SET @ID = (SELECT ID FROM INSERTED) SET @nome = (SELECT nome FROM INSERTED) UPDATE Recordes SET nome = nome + @nome WHERE ID = @ID END GO
Obrigado desde já.
Respostas
-
Matheuskzt,
Certamente as sua triggers não são o melhor caminho (pelo menos do modo que estão criados).
Neste caso, não há necessidade de criar 2 triggers para "disparo" do INSERT na tabela "Recordes".
Outro ponto que fiquei em dúvida é sobre o porque você concatena o "nome" e a "pontuação"? Não é para verificar e substituir o jogador, caso este novo obtenha maior pontuação que um dos 10 primeiros?
Então, você precisa criar uma lógica para todo este "mecanismo". Só após você criar um princípio de lógica é que podemos indicar o que está certo ou errado.
Por favor, indique mais informações para que possamos ajudar você à encontrar uma solução.
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"- Sugerido como Resposta Ricardo Barbosa Cortes quarta-feira, 29 de outubro de 2014 16:57
- Marcado como Resposta Ricardo Barbosa Cortes quarta-feira, 29 de outubro de 2014 17:43
Todas as Respostas
-
-
Matheuskzt,
Certamente as sua triggers não são o melhor caminho (pelo menos do modo que estão criados).
Neste caso, não há necessidade de criar 2 triggers para "disparo" do INSERT na tabela "Recordes".
Outro ponto que fiquei em dúvida é sobre o porque você concatena o "nome" e a "pontuação"? Não é para verificar e substituir o jogador, caso este novo obtenha maior pontuação que um dos 10 primeiros?
Então, você precisa criar uma lógica para todo este "mecanismo". Só após você criar um princípio de lógica é que podemos indicar o que está certo ou errado.
Por favor, indique mais informações para que possamos ajudar você à encontrar uma solução.
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"- Sugerido como Resposta Ricardo Barbosa Cortes quarta-feira, 29 de outubro de 2014 16:57
- Marcado como Resposta Ricardo Barbosa Cortes quarta-feira, 29 de outubro de 2014 17:43