ON DELETE CASCADE - COMO UTILIZAR?

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Pessoal, gostaria de saber como posso utilizar esse comando para deletar dados nas tabelas de origem. Por exemplo, tenho uma tabela de fato que tem dados de origem igual a Certifica e na tabela de origem cadastrado essa origem e nas demais tabelas relacionadas o mesmo dado
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

É ao criar a FK que você informa que é ON DELETE CASCADE:

Selecionar tudo

SQL> create table filho(a number, b varchar2(10), constraint filho_fk foreign key(a)references PAI on delete cascade);

Table created.

SQL> insert into pai values(1);

1 row created.

SQL> insert into filho values(1, 'ABC');

1 row created.

SQL> delete pai;

1 row deleted.

SQL> select * from filho;

no rows selected

SQL> commit;

Commit complete.

SQL> 
SQL> 
Apagou o PAI e o filho foi automático "pros ares", hehehe :-)


Outros tópicos sobre o assunto:
http://glufke.net/oracle/viewtopic.php?t=2831
http://glufke.net/oracle/viewtopic.php?t=2664
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Como faço para realizar isso em uma tabela já existente?
icjunior
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 32
Registrado em: Seg, 02 Fev 2009 10:18 am
Localização: Atibaia - SP
Junior
DBA Oracle

Saudações Mariogus,

Para fazer em tabelas já existentes, ou você cria uma chave estrangeira paras tabelas, ou você recria (dropa e cria) sua chave estrangeira com o parâmetro ON DELETE CASCADE.

[]´s

Junior)
otavio.souza
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 22 Jun 2009 11:00 am
Localização: Porto Alegre
Atte,
Otávio Souza.
Programador Oracle.

Você pode utilizar um select dentro do seu delete também.

Ex: Delete From filho where pai_id in (Select id
From pai);
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes