[firebase-br] Criar gatilho ou deixar na chave estrangeira

Gladiston Santana gladiston em vidy.com.br
Qui Maio 9 16:27:00 -03 2013


Se estiver pedindo minha opinião, eu acho um risco uma exclusão em cascade
seja por chave estrangeira ou triggers, as razões :
triigers : a medida que o bd cresce, as triggers podem ficar "macarronicas"
e você mexe acolá e um processo desdobra de um jeito que não previu antes.
chave estrangeira com delete on cascade : quase a mesma coisa da triggers,
porém nem sempre a exclusão será permitida porque a ordem das tabelas que o
FB irá fazer as coisas pode ser a certa.

Na minha experiencia eu uso chave estrangeira (e muito) e inibo qualquer
delete/cascade, operações de incluir/alterar/excluir são feitas por uma
unica SP por cadastro onde ficam as regras para essas operações serem
realizadas ou negadas, já na exclusão estabeleço as tabelas que tem PK<->FK
e então  faço as exclusões na ordem que eu acho que ficará melhor. Faço
tudo via SP para manter a possibilidade de tornar a migração de linguagem
e/ou plataforma mais fácil. Algumas vezes, geralmente com operaçẽs de lote,
faço tudo em clientdataset, clicam num botão [Aplicar] e vai tudo para o
banco.


Gladiston Santana
Departamento de TI
Grupo Vidy
Tel (11) 4787-3122 ramal 228
Rod. Régis Bittencourt 3360 - Km 272,5
Taboão da Serra - SP - CEP: 06793-000
Visite nosso site: www.vidy.com.br
Visite também : www.expolabor.com.br




Em 9 de maio de 2013 14:03, Denis Rocha <denisrocha em hotmail.com> escreveu:

> Boa tarde
>
> Uma vez vi um post do Cantu dizendo para evitar chaves estrangeiras. Só
> não achei onde para postar aqui tbm. Creio que o melhor são triggers mesmo.
>
>
>
> "Ronaldo Pereira" <ronaldowp em yahoo.com.br> escreveu na notícia da
> mensagem:1366851497.95343.**YahooMailNeo em web163904.mail.**gq1.yahoo.com...
>
>> Boa noite Pessoal,
>>
>>       Gostaria de saber se alguém já passou por isso. Temos aqui na
>> empresa um banco de dados com em torno de 900 tabelas. Temos muitas
>> procedures e gatilhos no banco.
>>       Recentemente ficamos na dúvida sobre o que é mais indicado na
>> estrutura de tabelas mestre/detalhe.
>>       A dúvida está na exclusão de um registro da tabela principal
>> (mestre) e que tenha um registro filho (detalhe). Devemos deixar que a
>> chave estrangeira se encarregue disso, não permitindo, ou devemos criar um
>> gatilho na tabela principal, verificando se existe um registro na tabela
>> detalhe (filho), e caso exista poderia até dar uma exceção mais específica.
>>       Verificamos que se deixarmos para o banco controlar pela chave, ele
>> chega mesmo a tentar executar, e mesmo que não grave, se for pego um
>> gerador, ele não volta mais, mesmo a transação não ter sido gravada.
>>
>> Ronaldo Pereira
>> SDI Sistemas
>> ______________________________**________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/**artigo.php?id=1107<http://www.firebase.com.br/fb/artigo.php?id=1107>
>> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>>
>>
>
> ______________________________**________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/**artigo.php?id=1107<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



Mais detalhes sobre a lista de discussão lista