Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

djeco

Concorrencia no banco de dados com mysql_insert_id

Recommended Posts

Olá,

 

Estou inserindo um carro no banco, depois com o mysql_insert_id eu pego o seu id e envio por parametro para outra página pra inserir as fotos do carro, o problema é que tem duas pessoas cadastrando carros e quando ocorre das duas inserir juntas as fotos de dois ficam em um só pois as duas pegam o ultimo id.

 

Como posso resolver esse problema da concorrencia no banco de dados?

Uso o Mysql 5.

 

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve pegar o id imediatamente após o momento da inserção. Caso o sistema seja muito concorrido, você pode dar um lock na tabela e só liberá-la após você ter capturado o id. Mas isso não faz muito sentido, porque você deve associar a inserção ao registro, e a chave, como o nome diz, será a chave do registro, podendo ser recuperado a qualquer momento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu alterei pra que o id seja recuperado usando alguns atributos do carro, como cor, marca, modelo, preço, etc..

mas queria uma outra solução, como faço pra dar um lock na tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

lock table tabela_que_você_quer;
// ação
unlock table;
A tabela ficará bloqueada (ninguém conseguirá acessá-la enquando você não desbloqueá-la).

Mas acho que você deveria posta no fórum de mysql sobre isso, mostrar a estrutura do seu banco, que está irregular, e acredito que é justamente isto que está te confundindo: um conhecimento maior na construção e manipulação de bases de dados.

Dê uma lida em algo sobre FORMAS NORMAIS, CONTROLE DE TRANSAÇÕES, e INTEGRIDADE (relacional e referencial): isso vai te abrir um imenso horizonte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.