Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mota Sistemas

Integridade

Recommended Posts

Olá pessoal, será que alguem poderia me dar alguma dica.

 

Estou usando o mysql 5 e não estou conseguindo implementar os comandos que vem logo em seguida das foreign key, do tipo

ON UPDATE DEFAULT

ON DELETE CASCADE

 

vale lembrar que minhas tabelas são do tipo INNODB

 

Agradeço quem postar algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho que fazer essa pergunta..

 

Realmente é necessário você trabalhar com cascade? Forçar deletar dados relacionados pode ser fatal! rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Forçar deletar dados relacionados pode ser fatal! rsrs

 

Agora eu vou fazer algo que não se faz. :P Vou "invadir" o tópico do amigo...

 

h4v3st, porque você diz que pode ser fatal? Se por exemplo, eu tenho uma linha de produtos e vários produtos cadastrados nesta linha (uma tabela para linhas e outra para produtos, relacionando pela idLinhaProdutos). Se eu quiser excluir todos os produtos desta linha não é correto usar CASCADE e excluir só a linha?

 

Veja, não estou dizendo que você está errado h4v3st. Perguntei mesmo por curiosidade e para aprender se existe alguma restrição quanto à isto, já que meu conhecimento me MySQL é razoável e eu sempre achei que assim seria a forma correta de fazer. Não tenho muitos conhecimentos sobre sobre integridade (aprendi com o tópico do Wagner que eu indiquei para o Mota Sistemas). Se possível, explique o porque pode ser fatal.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom na minha linha de raciocínio, citando o seu caso por exemplo:

 

Você cadastra um produto, vamos supor que eu vendi aquele produto. Passou 2 anos e aquele produto eu não vou vender mais, você deletaria o produto utilizando o cascade. Irá ser deletado em todas as tabelas dados que possuem o código do seu produto e isso afetaria seu financeiro, contabilidade de anos passados. Pra mim o correto seria deletar um produto somente se ele não tiver sido utilizado em outra tabela (relacionado).

 

Eu sempre utilizei um campo "DELETE" caso não preciso utilizar algo, marco o campo delete (tipo boolean, true/false).

 

Meu pensamento sobre o cascade é esse, não que esteja totalmente correto mas ao meu ver funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi seu raciocínio.

No caso que eu coloquei, eu teria CASCADE em todas as tabelas relacionadas ao produto.

Então, ao excluir a linha, excluiria o produto e também excluiria todos os campos que tenham relação com este produto. A questão de excluir ou não os dados é forma de trabalhar (eu também não excluo, trabalho com campo status), mas SE VAI EXCLUIR, o melhor é usar CASCADE ou RESTRICT para manter a integridade referencial.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o raciocínio é este que voce disse. Trabalhar com o campo status para manter dados que podem servir como registro e histórico quando precisar.

 

Mas como você disse, se precisa excluir é melhor utilizar o cascade, pois ele força a exclusão em todas as tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito então... hehehe... Estávamos falando a mesma coisa de formas diferentes. Agora deu de invasão no tópico.

 

Voltamos com a programação normal. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.