[firebase-br] RES: Cascade Delete em uma mesma tabela

Alysson Gonçalves de Azevedo agalysson em gmail.com
Qui Out 11 13:26:04 -03 2012


Sei que mudar o paradigma de um sistema já em andamento não é viável a
curto prazo, mas quem sabe a longo prazo essa dica te ajude.


http://ftp.nchu.edu.tw/MySQL/tech-resources/articles/hierarchical-data.html
Obs, o artigo é inglês e o autor aplica em mysql, mas nada impede de você
utilizar em qualquer outro sgbd.


de quebra um outro link para você estudar numa base de teste
http://searchoracle.techtarget.com/tip/Converting-an-adjacency-list-model-to-a-nested-set-model



Alysson Gonçalves de Azevedo - (11) 984 917 730

"É curioso como as pessoas ficam confusas quando a frase não terminam do
jeito que elas periquito."



Em 9 de outubro de 2012 08:52, Sandro Souza <escovadordebits em gmail.com>escreveu:

> Bom dia/tarde/noite Walter.
>
> Como você deve ter visto, no exemplo que te passei, a coluna IDMAE não é
> obrigatória, justamente porque as pastas principais não tem ID de pasta
> mãe, ou seja, nas pastas principais a coluna IDMAE é NULL, e isso não viola
> regra alguma.
>
> Nenhuma chave estrangeira obriga a coluna a ter valor. Se ela tiver algum
> valor, terá que obedecer à respectiva chave estrangeira, mas se a coluna
> não for obrigatória, pode simplesmente ficar sem valor (NULL), como nesse
> exemplo da tabela de pastas.
>
> Faça o teste. :D
>
> Espero ter ajudado mais que atrapalhado. :D
> No dia 8 de Out de 2012 22:17, "Walter Campelo" <walter em weasistemas.com.br
> >
> escreveu:
>
> > Caro Sandro:****
> >
> > ** **
> >
> > Eu tentei isto, mas o resultado é que eu não consigo depois criar os
> itens
> > que são raiz, pois eles teriam o IDPAI = 0, e assim violariam a regra da
> > chave estrangeira.****
> >
> > ** **
> >
> > Mas, muito grato por sua resposta!****
> >
> > ** **
> >
> > Abraços****
> >
> > ** **
> >
> > Walter Campelo****
> >
> > WEA Sistemas de Informática****
> >
> > ** **
> >
> > *De:* Sandro Souza [mailto:escovadordebits em gmail.com]
> > *Enviada em:* segunda-feira, 8 de outubro de 2012 22:12
> > *Para:* FireBase; walter em weasistemas.com.br
> > *Assunto:* Re: [firebase-br] Cascade Delete em uma mesma tabela****
> >
> > ** **
> >
> > Bom dia/tarde/noite Walter.****
> >
> > Meu nobre, basta incluir a opção "on delete cascade" na chave estrangeira
> > da coluna "idpai" para a coluna "id" da mesma tabela.****
> >
> > Vamos criar a seguinte tabela:****
> >
> > CREATE TABLE PASTAS (
> > -- Id da pasta
> > ID INTEGER NOT NULL,
> > -- Id da pasta mãe
> > IDMAE INTEGER,
> > -- Descrição/nome da pasta
> > DESCRICAO VARCHAR (200) CHARACTER SET ISO8859_1 NOT NULL COLLATE PT_BR,
> > -- Chave primária
> > CONSTRAINT PK_PASTAS PRIMARY KEY (ID),
> > -- Chave única para não repetir pastas
> > CONSTRAINT UK_PASTAS_DESCRICAO UNIQUE (IDMAE, DESCRICAO));****
> >
> > -- Chave estrangeira para o id da chave mãe
> > ALTER TABLE PASTAS ADD CONSTRAINT FK_PASTAS_PASTAS FOREIGN KEY (IDMAE)
> > REFERENCES PASTAS ON UPDATE CASCADE ON DELETE CASCADE;****
> >
> > Agora é só testar.****
> >
> > Espero ter ajudado mais que atrapalhado. :D****
> >
> > No dia 8 de Out de 2012 21:24, "Walter Campelo" <
> walter em weasistemas.com.br>
> > escreveu:****
> >
> > Boa noite!
> >
> > Caros colegas, tenho uma tabela com os campos abaixo, que apresenta uma
> > estrutura em árvore (muito parecida com a estrutura de pastas do Windows)
> > em
> > um TreeView.
> > ID
> > NOME
> > IDPAI
> >
> > A minha questão é: - Eu poderia de modo automático, através de um TRIGGER
> > (ou por outro meio), eliminar todos os registros "filhos" quando um
> > registro
> > "pai" for eliminado?
> >
> > Algo assim:
> >
> > ID      NOME            IDPAI
> > 1       Raiz            0
> > 2       Filho1  1
> > 3       Filho2  1
> > 4       Pai1            1
> > 5       Filho3  4
> > 6       Filho4  4
> >
> > Assim, se eu eliminasse o registro com o ID = 4, os registros 5 e 6
> > deveriam
> > ser também eliminados, pois tem o IDPAI = 4.
> >
> > Alguma ideia?
> >
> > Muito grato
> >
> > Walter Campelo
> > WEA Sistemas de Informática
> >
> >
> >
> > ______________________________________________
> > 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
> > Para consultar mensagens antigas: 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
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista