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

Sandro Souza escovadordebits em gmail.com
Ter Out 9 08:52:08 -03 2012


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****
>



Mais detalhes sobre a lista de discussão lista