Fórum inserção em banco mysql #320814

08/05/2006

0

bom dia,

gostaria de uma ajuda.

queria saber se tem como eu acrescentar um registro em duas tabelas ao mesmo tempo, por exemplo.
tem uma tabela codigo, nome, dataCadastro e uma segunda tabela codigo,foto. quando eu inserir na primeira tabela quero que o sistema já coloque na segunda o código que o mysql gerou autoincremet e a foto, tem como fazer isso? o delete eu consigo através do inner join e inserção tem como fazer alguma coisa do tipo?

agradecendo desde já


Piaum3

Piaum3

Responder

Posts

08/05/2006

Rafaela.campos

Olha através de uma sentença SQL so vc não vai conseguir, vc vai ter que realizar 2 insercoes msm, o q posso te sugerir eh q, pelo Delphi, no evento AfterPost ou AfterApplyUpdates da 1 tabela vc coloque o evento de inserção da segunda.

Espero ter ajudado

Att


Responder

Gostei + 0

08/05/2006

Piaum3

ok entendi,

mais desse jeito eu posso perder uma ocorrência, por exemplo deu problema no windows bem depois que eu inseri as primeiras informações, e não consegui inserir na segunda tabela entende, ai pronto caiu a credibilidade do meu sistema, sei que pela velocidade de processamento será uma em um milhão mais se esse um acontecer, ai sujou legal hehehehe


Responder

Gostei + 0

08/05/2006

Rafaela.campos

Tiago, seguinte, tenho outra opção pra vc, não sei quais componentes esta usando para acessar seus dados, mas vc poderia fazer uma procedure iniciando a transacao no inicio , passando os dois inserts e em caso de exceção daria um roolback, tipo assim:

try
conexao.startconnection; (ou similar)

componente1.sql.text:=´insert into tab1....´;
componente2.sql.text:=´insert into tab2....´;

conexao.commit;
except
conexao.rollbak;
end;

ou

se utilizar um componente estilo SQLProcessor, podera passar os dois inserts no script e adicionar o commit no fim, assim atingirá seu objetivo, pois caso haja algum erro nada será executado..

Att


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar