[firebase-br] RES:  Cascade Delete em uma mesma tabela
    Walter Campelo 
    walter em weasistemas.com.br
       
    Seg Out  8 22:19:12 -03 2012
    
    
  
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