[OFF] ATUALIZA 2 TABELAS AO MESMO TEMPO

ESLEYSANCHES 04/12/2012 01:04:31
#415351
Olá a todos galera ...

Surgiu uma dúvida besta galera.
Sempre trabalhei com sistemas com diversas tabelas porém meu relacionamento entre elas era um pouco diferente eu atualizava a primeira tabela, dependendo do resultado atualizava a segunda, ou seja a tabela principal. Ou seja 2 UPDATES.

Porém a dúvida é a seguinte, existe uma maneira de quando eu fazer um update em uma tabela automaticamente atualizar outra? Vou tentar dar um exemplo fácil:

----------------------------------------------------------->
TABELA: servicos
ID = Auto_Increment, INT(4)
servico = VarChar (120)

TABELA: movimentos
ID = Auto_Increment, INT(4)
descricao = VarChar (180)
servico = VarChar (120)
----------------------------------------------------------->

Como podem perceber a tabela serviços armazenam todos os serviços que eu faço por exemplo.
E a tabela movimento (apenas de exemplo galera) registra a descricao e o servico que eu fiz.

Eu faço da seguinte forma carrego todos os dados da tabela servicos no campo servicos com um combobox e faço a gravacao do movimento
Se por acaso eu alterar na tabela servicos o serviço Formatação para Teste eu tenho que fazer um UPDATE para a tabela servicos para mudar para Teste e executar, em seguida eu tenho que fazer um outro UPDATE para a tabela movimentos para alterar tudo que era de formatacao para teste.

Queria saber se consigo fazer isso automatico, ao alterar um registro na tabela servicos alterar também todos os registros das tabelas filhas que utilizem o campo serviço.


Deu para entender pessoal, espero que sim.
Como estou apenas fuçando para fazer um teste estou fazendo um teste no ACCESS, mas ajuda em MySQL ou SQL Server são bem vidas, consigo trabalhar nos 3.


Abraços
Vlw!!!!!!!!!!!!!
LLAIA 05/12/2012 16:56:15
#415505
Resposta escolhida
Na realidade, vc tem um problema de modelagem, não de codificação (prevejo que só terá que mudar alguma coisas após a alteração da modelagem principalmente relatórios)

A tabela movimentos, tem que ficar assim:

----------------------------------------------------------->
TABELA: movimentos
ID = Auto_Increment, INT(4)
descricao = VarChar (180)
[txt-color=#e80000]IDServico = INT(4)[/txt-color]


Dessa forma, ao inserir um movimento, em vez de vc informar o nome do serviço, vc passa o ID dele pro campo IDServico. Assim vc pode ficar sossegado pois sempre terá os dados corretos do servico quando precisar listar as movimentações. Pra isso será necessário uso de JOINs, exemplo:

SELECT m.*, s.Servico FROM movimentos m, servicos s WHERE m.IDServico = s.ID



ALEVALE 05/12/2012 17:03:05
#415506
Faça uma trigger
ESLEYSANCHES 07/12/2012 02:47:17
#415583
Citação:

:
Na realidade, vc tem um problema de modelagem, não de codificação (prevejo que só terá que mudar alguma coisas após a alteração da modelagem principalmente relatórios)

A tabela movimentos, tem que ficar assim:

----------------------------------------------------------->
TABELA: movimentos
ID = Auto_Increment, INT(4)
descricao = VarChar (180)
[txt-color=#e80000]IDServico = INT(4)[/txt-color]


Dessa forma, ao inserir um movimento, em vez de vc informar o nome do serviço, vc passa o ID dele pro campo IDServico. Assim vc pode ficar sossegado pois sempre terá os dados corretos do servico quando precisar listar as movimentações. Pra isso será necessário uso de JOINs, exemplo:

SELECT m.*, s.Servico FROM movimentos m, servicos s WHERE m.IDServico = s.ID





Então, na verdade é isso mesmo que tenho que fazer, e para puxar os dados fazer um INNER JOIN.


Mas vlw pela resposta!
Abraços!
Tópico encerrado , respostas não são mais permitidas