Ir para conteúdo

POWERED BY:

Arquivado

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

Periscuelo

[Resolvido] auto_increment em campo secundário

Recommended Posts

Boa Tarde Amigos do Imasters.

 

É possível fazer um auto_increment inteligente?

 

Por exemplo em uma tabela você tem os campos:

 

Tabela = Nota Fiscal

 

Campos:

 

id_nota = PK - auto_increment

numero_nota = INDEX

id_usuario = FK

descricao

 

e etc.

 

Trabalhando nos 4 campos que citei, temos a seguinte situação:

 

O Usuário pode ter varias notas, porém cada um vai ter sua numeração.

Ex: pode existir o usuário 1 com a nota 1 nota 2 e nota 3

Também pode existir o usuário 2 com a nota 1 nota 2 e nota 3

 

Não pode existir duplicidade de usuário e notas. até ai tranquilo.

Minha duvida é, como faço para que o campo numero_nota seja auto_increment por usuário?

Ex: quando inserir o usuário 1 o numero_nota automaticamente será 1

quando inserir o usuário 2, ele verifica que o mesmo ainda nao possui numero_nota e começa

também a partir do 1.

 

É possivel fazer isto com auto_increment ou eu teria que ver alguma solução em PHP?

Qual a solução ideal para não correr o risco de o mesmo usuário estar sendo utilizado

em maquinas diferentes (Sim o usuário pode passar a senha dele pra alguém e acontecer

de existir o mesmo usuário logado em maquinas diferentes e eu não posso travar isso!)

e acabar tentando inserir o número ao mesmo tempo e ocorrer um erro?

 

Não sei se fui claro o suficiente.... Mas qualquer coisa me avisem que tento explicar melhor.

 

Grato pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque cada usuário vai ter uma nota fiscal

e a numeracão da nota começa do 1.

 

Então se o usuário 1 emite uma nota ela é gravada.

Se o usuário 2 emite ela também é gravada mas cada usuário tem sua nota.

 

Logo eu não posso fazer uma PK pois é errado dizer que o usuário dois emitiu

a nota numero 2 uma vez que esta é a primeira nota que ele emite.

 

Na realidade não é um sistema onde uma empresa emite notas e cada usuário emite a sua.

E sim cada empresa emitindo sua nota entendeu?

 

O usuário 1 pertence a empresa A portanto a empresa A emitiu a nota numero 1 e vai continuar dai.

Não são varias notas para mesma empresa e sim cada um por si.

 

Deu pra entender + ou -?

 

Grato pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
#digamos que você usa sessoes.....
#então você pega o usuario logado na sessão ... joga numa variavel...
#Nao irei colocar como pegar o nome do usuario logado pois acho que você pode fazer isso....
#e faz a pesquisa... LEMBRANDO que o campo ID não Poderá ser AUTO INCREMENT...
#pois esse codigo que estou passando já ira fazer isso....
$sql = mysql_query("SELECT * FROM tabela where empresa = '".$empresa."'") 
or die ("Erro ao tentar pegar o ID referente ao usuario. <br/><b>MOTIVO:</b> ".mysql_error());
$conta = mysql_num_rows($sql);
$add = $conta + 1 ;
#macielcr7@gmail.com
#macielc.ronaldo@hotmail.com
#www.mpwdesiner.co.cc
$inserir = mysql_query("INSERT INTO tabela (id,empresa,) VALUES ('$add', '$empresa')") 
or die (mysql_error());
?>

MSN: macielc.ronaldo@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Macielcr7 primeiramente muito obrigado pela atenção.

 

Eu pensei em algo assim também como você exemplificou.

A questão é, o que impede de 2 usuários da mesma empresa

acessar o sistema, obter o mesmo código de incremento e acabar

dando erro no momento de salvar? Entende oque eu digo?

Precisar ser um sistema eficiente sem dar margem de erros como

esta para não trazer transtornos nem ao usuário e nem ao administrador

do sistema.

 

Da forma que sugeriu se duas pessoas entrarem ao mesmo tempo já vai dar err

 

Mais alguma idéia diferente de fazer isso?

 

Grato novamente pela atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simplesmente nao faz sentido nenhum ter q seguir a ordem 1,2,3,4 por empresa. O cliente quer se manter informado sobre o q acontece, quanto ele fatura , estoque e coisas assim e nao se os numeros estao em ordem. Alem disso nao eh possivel fazer isso q você quer, a PK com auto incremento deve ser unica na tabela.

 

Mas ainda sim se você quiser fazer desse modo poderia criar uma tabela por empresa ou outra besteira do genero.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew amigo giesta, sua resposta ajudou bastante.

 

Para os que tiverem uma duvida como a minha,

Eu resolvi pegando o ultimo Id Inserido

e fazendo uma query de UPDATE com MAX(campo) + 1

logo após inserir os dados.

 

Isso resolveu perfeitamente meu problema.

 

Pode fechar o tópico

 

Abraços.

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.