Migrações de um banco de dados para outro está cada vez mais comum, o problema é a migração de dados que estão relacionados via PK e Fk, uma ajuda muito boa seria a possibilidade de poder atualizar a PK em um tabela, e o banco de dados se encarregasse de atualizar no banco de dados todas as relações existentes entre a tabela pai e a filha. Abaixo vamos verificar como fazer isso em um banco de dados oracle usando trigger e stored procedure.
1º Passo :
Criar um banco de dados de exemplo para aplicar o conceito, para isso crie um usuário no oracle, depois execute os scripts demobld.sql
2º Passo :
Após criar o nosso banco de exemplo, vamos rodar no banco de dados criado o seguinte script : uc.sql em anexo no artigo.
3º Passo :
No SQLPlus do oracle, conectado ao banco criado, execute o seguinte comando para cada tabela que será feito a atualização da PK :
Exec update_cascade.on_table(‘Nome da Tabela’);
4º Passo :
Execute o comando de atualização de banco de dados com no exemplo a seguir, aproveitando o banco criado no passo 1:
UPDATE DEPT
SET DEPTNO = 1000 WHERE DEPTNO = 10;
O RESULTADO SERÁ QUE ONDE O SISTEMA ENCONTRAR O DEPTNO = 10 , A TRIGGER TROCARÁ NAS TABELAS FILHAS ONDE ENCONTRAR O VALO 10 POR 1000, SEM PRECISAR DESABILITAR AS CONSTRAINT DO BANCO DE DADOS
http://www.makersoftware.com.br/all.tar