DEFINIR CHAVE PRIMARIA.
Galera preciso gerar uma chave primaria e estou com duvida em algo relativamente simples, tenho 3 tabelas no banco:
codigo,mes,ano (codigo sequencial, mes atual e ano atual )..
O Problema é que a cada mes os valores de codigo tem q zerar, até aà blz, ta funcionando ok (defini codigo,mes e ano como minhas PK).
Só que cai numa sinuca, fazendo com Select MAX(codigo) + 1 Where mes = mesAtual AND ano = anoAtual dá certo mais eu sei que é errado
como será q posso resolver? sei q o correto é utilizar Last_Insert_ID() só q nao vi até agora outra forma de fazer isso..
codigo,mes,ano (codigo sequencial, mes atual e ano atual )..
O Problema é que a cada mes os valores de codigo tem q zerar, até aà blz, ta funcionando ok (defini codigo,mes e ano como minhas PK).
Só que cai numa sinuca, fazendo com Select MAX(codigo) + 1 Where mes = mesAtual AND ano = anoAtual dá certo mais eu sei que é errado
como será q posso resolver? sei q o correto é utilizar Last_Insert_ID() só q nao vi até agora outra forma de fazer isso..
1 - Cria uma CHAVE COMPOSTA entre a combinação dos campos para evitar a possÃvel duplicidade.
2 - vc pode criar um TRIGGER no banco de dados gerar a numeração de uma forma mais segura.
2 - vc pode criar um TRIGGER no banco de dados gerar a numeração de uma forma mais segura.
Como criaria essa trigger? pq por ex preciso dar um gato que se alguma encomenda for recebida no mes 04 e for referente ao mes 03 o pessoal altera a data do pc e ela entra no sequencial do mes 3.. e tem q começar a contar denovo a cada mes, ai se o pessoal voltar a data retroativa ele entra na contagem do mes 03 mesmo lançando no mes 04..
Qual seu Banco de dados ? Veja o conceito.
SQL SERVER
http://www.devmedia.com.br/triggers-no-sql-server-teoria-e-pratica-aplicada-em-uma-situacao-real/28194
MYSQL
http://www.linhadecodigo.com.br/artigo/3567/mysql-basico-triggers.aspx
SQL SERVER
http://www.devmedia.com.br/triggers-no-sql-server-teoria-e-pratica-aplicada-em-uma-situacao-real/28194
MYSQL
http://www.linhadecodigo.com.br/artigo/3567/mysql-basico-triggers.aspx
Utilizo o MySQL, na verdade o mes e ano eu pego da data da maquina, só preciso fazer o sequencial de uma forma correta sem ser com Select MAX(codigo) + 1
pq são uns 10 terminais e vai dar problema certeza e não quero dor de cabeça.
Dei uma lida no link, eu utilizo trigger mas nunca utilizei para gerar codigo de chave primaria
pq são uns 10 terminais e vai dar problema certeza e não quero dor de cabeça.
Dei uma lida no link, eu utilizo trigger mas nunca utilizei para gerar codigo de chave primaria
Tudo tem a primeira vez , Imagino que vai resolver seu problema.
Chave Composta (integridade )
Trigger - Geração com menos margem de erros
Chave Composta (integridade )
Trigger - Geração com menos margem de erros
Tenho uma duvida, precisaria fazer uma Trigger Before insert para ver qual meu ultimo código, só que como vou recuperar a informação pra depois dar o Insert?
Colega Mestre,
No PostGreSQL eu uso Sequences.
Não sei como é no MySQL. Se tiver sequeces, você poderá usar, caso contrário improvisar uma sequence para você, algo como:
Usando Sequences no MySQL
http://www.tutorialspoint.com/mysql/mysql-using-sequences.htm
Tudo de bom.
No PostGreSQL eu uso Sequences.
Não sei como é no MySQL. Se tiver sequeces, você poderá usar, caso contrário improvisar uma sequence para você, algo como:
Usando Sequences no MySQL
http://www.tutorialspoint.com/mysql/mysql-using-sequences.htm
Tudo de bom.
Citação::
Colega Mestre,
No PostGreSQL eu uso Sequences.
Não sei como é no MySQL. Se tiver sequeces, você poderá usar, caso contrário improvisar uma sequence para você, algo como:
Usando Sequences no MySQL
http://www.tutorialspoint.com/mysql/mysql-using-sequences.htm
Tudo de bom.
Então mais como faria a sequence zerar em cada mes?? ..
Citação::
Tudo tem a primeira vez , Imagino que vai resolver seu problema.
Chave Composta (integridade )
Trigger - Geração com menos margem de erros
Vamos supor que eu criasse uma Trigger antes de inserir para dar uma Call numa SP, como teria de ser essa SP? pra retornar o codigo?
Trigger é um GATILHO, ele DISPARA algo, quando vc realiza alguma AÇÃO [Ô]CRUD[Ô] ou outra.
resumindo vc pode criar ela tanto no AFTER quanto no BEFORE, isso vai depender de como estejam as regras de Aceitar NULL na sua coluna, os exemplos do links
estão exatamente iguais a sua necessidade, é só adaptar a sua tabela.
resumindo vc pode criar ela tanto no AFTER quanto no BEFORE, isso vai depender de como estejam as regras de Aceitar NULL na sua coluna, os exemplos do links
estão exatamente iguais a sua necessidade, é só adaptar a sua tabela.
Tópico encerrado , respostas não são mais permitidas