Jump to content
Fórum Script Brasil
  • 0

Aplicação De Procedure


Elber Carretoni
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.1k
    • Total Posts
      647k
×
×
  • Create New...