Alterar conteudo de um campo chave estrangeira de duas tabelas

(DeivitePopo) #1

Caros estou com um peroblema:
Tenho uma tabela cargos que tem os codigos de cada cargo que por sua vez é inserido no campo cargo da tabela funcionario, por meio de chave estrangeira.
A questao é que esses cargos tem um codigo predefinido que o cliente esqueceu de me passar e agora que as duas tebelas estam populadas preciso modificar esses codigos.
Alguem sabe como poso fazer essa operação? sem comprometer meus dados do banco de dados.

(bitsystems) #2

Brother,

Eu estou com dificuldades de fazer este relacionamento e fazer com que o scriptcase entenda-o. Ja modifiquei o banco de dados para o innodb e criei os indices e o foreign key. Agora como o scriptcase entende esse relacionamento?

Você pode me ajudar?
GRATO

TSANCHES

(Cleyton Euler) #3

Bitsystems,

Acho que vc está misturando conceitos.

Relacionamento entre tabelas é um conceito de banco de dados relacionais. A princípio, a camada de aplicação nem sabe que existe relacionamentos no BD.

Se vc criou uma tabela de funcionarios e outra de cargos e fez o relacionamento entre as duas utilizando a PK de cargos com FK de funcionarios seu relacionamento está correto.

No SC vc faz por exemplo, uma aplicação formulário para cadastro de funcionários. No campo de cargo vc faz o tipo de campo select buscando na tabela cargo. Pronto. O SC não precisa entender o relacionamento entre essas tabelas e a bem da verdade mesmo que não existisse estes relacionamento vai funcionar também.

Existem outros conceitos no SC que vc vai pegando com o tempo. Vc pode construir um relacionamento na camada de aplicação usando o SC. Isso é feito automaticamente pelo SC quando vc usa mestre/detalhe padrão do SC.

Mesmo que não exista um relacionamento no BD o SC cria a dependencia. Exemplo: Vc tem um pedido no mestre e os itens do pedido no detalhe. Dependendo de como vc configurar a ligação mestre/detalhe o SC vai criticar se vc tentar apagar um pedido que já tenha itens do pedido, mesmo que esse relacionamento no BD não exista.

(bitsystems) #4

Cleyton,

Obrigado pelos esclarecimentos.
Vou ver mais sobre estes assunto e volto a postar os resultados positivos e negativos

Grato,
TSANCHES

(DeivitePopo) #5

Prefeito Cleyton Euler.
Se tiver alguma duvida sobre o select posta ai.
No inicio tambem tive essa duvidas e não exite em perguntar.
Na verdade esse relacionamento feito por select pode ser bem visualizado na opção de wizard do campo select, no caso de duvidas vc pode ir direto no wizard e ver como relacionar as tabelas.

(Diogo Toscano) #6

Respondendo sua duvida inicial, voce vai precisar fazer a correlação da chave antiga com a chave nova e atualizar os registros.

No caso do MySQL fica ate facil pois vc pode usar o set foreing checks pra zero para ele nao analisar o relacionamento e modificar as chaves e depois ligar novamente para 1, pois, na teoria, voce nao pode modificar um filho se nao existir o pai. Se nao for MySQL, voce vai precisar inserir o registro pai, dar o update do registro antigo para a chave do novo registro e deleter o registro pai antigo …