Skip to content

⚙️ Triggers e Stored Procedures – Regras #11

Description

@wChrstphr

📝 Descrição

Criar triggers e stored procedures no PostgreSQL para implementar regras de negócio do jogo, mantendo consistência automática e lógica no banco (por exemplo, controlar estoque de itens, atualizar ranking, registrar eventos de combate).

✅ Tarefas

  • Definir triggers para restrições automáticas:
    • Impedir que quantidade de item no inventário fique negativa.
    • Ao inserir nova pontuação do jogador em tabela de ranking, atualizar coluna de “melhor pontuação” na tabela player.
  • Criar stored procedure sp_registra_kill(monster_id INT, player_id INT) que:
    • Insere registro na tabela de “combates” (log de eventos).
    • Atualiza XP do jogador baseado em atributos do monstro.
    • Se XP ultrapassar limite, incrementa nível do jogador e reseta XP para próximo nível.
  • Criar stored procedure sp_atualiza_loot(monster_id INT, player_id INT) que distribui itens aleatórios (baseado em probabilidade) para inventário do jogador.
  • Adicionar comentários explicativos (--) em cada trigger e SP, detalhando propósito e parâmetros.
  • Testar triggers e SPs manualmente: chamar SP no psql e verificar se tabelas relacionadas de fato mudam conforme esperado.
  • Anotar no script quaisquer pré-requisitos (ex.: funções auxiliares, esm alias, bibliotecas).

🎯 Critérios de Aceitação

  • A trigger de controle de estoque impede qualquer UPDATE ou INSERT que faria quantidade_item < 0, retornando erro.
  • Ao chamar CALL sp_registra_kill(…), tabelas de log e XP/nível do jogador são atualizadas de acordo.
  • Chamadas às SPs não geram erros de sintaxe ou de integridade (FK).
  • Procedimentos armazenados têm comentários no topo explicando parâmetros, fluxo interno e resultado esperado.
  • Testes manuais registram pelo menos três cenários de combate, conferindo cada mudança no banco.

💡 Exemplos

Siga o padrão de commits estabelecidos no Guia de Contribuição


🔗 Relacionamentos

Esta issue está relacionada a:

  • Pull Request: #
  • Outra Issue: #

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions