DEFINIR CHAVE PRIMARIA.

MESTRE 03/03/2016 08:21:50
#458534
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..
CLEVERTON 03/03/2016 09:03:55
#458539
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.

MESTRE 03/03/2016 09:07:44
#458541
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..
MESTRE 03/03/2016 09:14:22
#458547
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
CLEVERTON 03/03/2016 09:19:20
#458549
Resposta escolhida
Tudo tem a primeira vez , Imagino que vai resolver seu problema.

Chave Composta (integridade )
Trigger - Geração com menos margem de erros
MESTRE 03/03/2016 09:29:48
#458552
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?
SINCLAIR 03/03/2016 09:30:20
#458553
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.


MESTRE 03/03/2016 09:35:22
#458554
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?? ..
MESTRE 03/03/2016 09:37:21
#458555
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?
CLEVERTON 03/03/2016 11:14:20
#458564
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.
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas