Array
(
)

Atualização de determinado campo em todo o Banco

Diogoalles
   - 21 dez 2005

pessoal

tenho uma banco de dados q está em diversos clientes e hoje possui mais de 160 tabelas.
em muitas dessas tabelas eu tenho o campo CD_CLIENTE (Integer) que é um dos principais do sistema.
teremos que liberar um update que pegará todos os campos CD_CLIENTE (independente de fazer parte de uma chave ou não) e atualizar o seu código.
então hoje por exemplo, tenho o CD_CLIENTE = 1, em determinada operação ele passará a ser 110001.
gostaria de uma função que passasse em todas as tabelas do sistema e que se encontrar o campo CD_CLIENTE e encontrar o valor 1, fizesse então a alteração para o 110001.
tenho como fazer isso através de comandos SQL sem especificar as tabelas, ou seja, sem ficar varrendo tabela por tabela?


utilizo D7 e FB1.5

obrigado

Diogo


Emerson
   - 21 dez 2005

monte o relacionamento (FK) com a opção UpdateCascade. Assim, quando o valor do campo for alterado, todas as tabelas que utlizam esse campo como chave estrangeira serão modificados.


Diogoalles
   - 21 dez 2005

Olá Emerson,

bem, não entendi muito bem, mas o campo CD_CLIENTE não necessariamente faz parte de uma chave, as vezes sim, outras não!

de forma mais ´grosseira´ seria:

UPDATE ´todas_tabelas´ (q tiverem o campo CD_CLIENTE) SET CD_CLIENTE = 1100001 WHERE CD_CLIENTE = 1;

obrigado


Emerson
   - 21 dez 2005

´bem, não entendi muito bem, mas o campo CD_CLIENTE não necessariamente faz parte de uma chave, as vezes sim, outras não!´
um banco de dados sem os devidos relacionamentos pode perder a integridade muito facilmente. reveja seus conceitos.

se o seu banco de dados estivesse bem modelado e com as chaves estrangeiras (relacionamentos) feitos corretamente, você precisaria fazer o update apenas na tabela de clientes. as demais tabelas seriam alteradas automaticamente pelo mecanismo do banco de dados.

como você não deve ter feito seu banco de dados dessa forma, sugiro que você faça seu update via stored procedures, utilizando as tabelas de sistema para montar as instruções corretamente e fazer as devidas atualizações.