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

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


Em tempo, outro artigo em inglês mas pra firebird.
www.firebirdsql.org/file/community/ppts/fbcon11/FBTrees2011.pdf


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 11 de outubro de 2012 13:26, Alysson Gonçalves de Azevedo <
agalysson em gmail.com> escreveu:

> 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