Ir para conteúdo
Fórum Script Brasil
  • 0

Aplicação De Procedure


Elber Carretoni

Pergunta

Pessoal...

Tenho um banco de dados que necessita de muitas triggers. Sendo assim, estarei criando somente uma Procedure que faça todas as funções do banco de dados, e então criaria triggers somente para chamar a execução da Procedure...

Gostaria de saber qual a melhor maneira de criar essa procedure? Esse seria o meio mais indicado?

Enfim...é a primeira vez que terei de aplicar este conceito e gostaria de pedir gentilmente o apoio do pessoal mais experiente...

Abraço a todos!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Guest --Gesiel --

Elber,

antigamente as triggers eram amplamente utilizadas, contudo existem inconvenientes em se utilizar triggers, por exemplo:

1) as triggers não ficam claramenrte documentadas no projeto, são chamadas implicitamente e são mais difívocês de debugar.

2) conforme são criadas novas triggers nas tabelas do db, começa o aninhamento de suas chamadas, ou seja, inseriu na tabela X, a tabela Y é afetada e em seguida afeta a tabela W. Confuso, não? Imagina num banco com 300 tabelas...

Muita gente, incluindo eu, adota a abordagem de fazer tudo via stored procedure (exceto quando não há como evitar trigger) de forma que a SP seja chamada 'explicitamente' do código do programa. Ok, mas quais são as vantagens: Muitas, exemplo:

1) facilitando rastrear todas as implicações de qualquer ação sobre as tabelas do DB.

2) aplica o modelo de permisão simplificada por usuário, ou seja, o usuário deve ter permissão de executar a SP. Não é dada nenhuma permissão (select, update ou insert) aos usuário diretamente nas tabelas. Só via SP.

3) execução de ações especialidas, de forma que cada SP faça apenas uma ação determinada e permita ao SQL Server criar um plano de execução para cada SP.

Então, na minha opinião, um bom modelo (inclusive recomendado pela MS) é utilizar SPs para as tarefas de acesso e de manipulação de dados.

é minha opinião, ok?

boa sorte.

Link para o comentário
Compartilhar em outros sites

  • 0
Elber,

antigamente as triggers eram amplamente utilizadas, contudo existem inconvenientes em se utilizar triggers, por exemplo:

1) as triggers não ficam claramenrte documentadas no projeto, são chamadas implicitamente e são mais difívocês de debugar.

2) conforme são criadas novas triggers nas tabelas do db, começa o aninhamento de suas chamadas, ou seja, inseriu na tabela X, a tabela Y é afetada e em seguida afeta a tabela W. Confuso, não? Imagina num banco com 300 tabelas...

Muita gente, incluindo eu, adota a abordagem de fazer tudo via stored procedure (exceto quando não há como evitar trigger) de forma que a SP seja chamada 'explicitamente' do código do programa. Ok, mas quais são as vantagens: Muitas, exemplo:

1) facilitando rastrear todas as implicações de qualquer ação sobre as tabelas do DB.

2) aplica o modelo de permisão simplificada por usuário, ou seja, o usuário deve ter permissão de executar a SP. Não é dada nenhuma permissão (select, update ou insert) aos usuário diretamente nas tabelas. Só via SP.

3) execução de ações especialidas, de forma que cada SP faça apenas uma ação determinada e permita ao SQL Server criar um plano de execução para cada SP.

Então, na minha opinião, um bom modelo (inclusive recomendado pela MS) é utilizar SPs para as tarefas de acesso e de manipulação de dados.

é minha opinião, ok?

boa sorte.

Gesiel, muito obrigado pela resposta...

concordo plenamento que o aninhamento de chamadas através de triggers pode ser um problema imenso...

Entretanto, através da análise que fiz, nenhuma tabela será aninhada entre si, somente uma tabela do sistema será aninhada à execução de todas as outras tabelas, visto que também na procedure não há nenhuma chamada em qualquer ação gatilho que dispararia a execução de determinada trigger que poderia causar um inferno aninhado no banco de dados!

Na verdade, estou precisando criar um sistema que necessita de versionalização de registros do banco de dados, onde toda alteração acresce o número da versão e mantém o registro antigo, antes de ser alterado...estou criando todo este processo via bd, já que fazer isso pelo front-end seria tremendamente terrível...

Agradeço pela atenção, apoio e pela boa vontade!

Abração Gesiel!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...