DEFINIR CHAVE PRIMARIA.

MESTRE 03/03/2016 11:33:20
#458565
O Problema é a regra, como vou colocar numa Trigger antes do Insert ele contar +1 no codigo sequencial e se for no mes 04 ele começar a contar do zero denovo?
ou ser capaz de inserir um sequencial no mes 03 mesmo ele sendo lançado no mes 04 entende?

Eu ja utilizo Trigers em várias situações más não entendo como aplicar uma trigger pra gerar um codigo sequencial de chave primaria.

por ex:

Lançamentos mes: 03
1 03 2016
2 03 2016
3 03 2016
Lançamentos mes: 04
1 04 2016
2 04 2016

Aí chega um produto do mes 03 que esqueceram de cadastrar no mes 03 más ele é Obrigatório ser registrado no sequencial do mes 03 mesmo sendo cadastrado no mes 04 entao vai ser registrado o produto [Ô]04 03 2016[Ô] mesmo sendo no mes 04..
SINCLAIR 03/03/2016 11:37:12
#458566
Mestre,

é que não conheço bem MySQL, mas se você quer sequence por ano e mes, talvez uma tabela com os campos ano, mes, sequencial e sempre que precisar de um sequencia, busque por ano e mês, pegue o sequencial, some + 1, em seguida guarde este valor já com somatório no campo sequencia para o ano e mês, de forma a ser utilizado como início no próximo procedimento.

Como o colega Cleverton falou, você poderá usar uma Trigger. Um gatilho, neste caso, poderia ser no momento de insert da tabela com dados principais sendo gravados, sendo que o gatilho buscaria o proximo valor de sequencial na tabela com ano e mês, atualizaria em + 1 nesta tabela e também gravaria este mesmo valor sequencial na sua tabela com dados principais.

No momento é o que me ocorre.
CLEVERTON 03/03/2016 11:48:29
#458569
Eu acho que ele está usando um campo Autonumeração, caso for isso, desative a autonumeração e use a Trigger,

Aproveitando a dúvida do colega, vc pode colocar uma condição na SEQUENCE ?
MESTRE 03/03/2016 12:23:39
#458571
consegui .

To zerando a chave primary no fim do mes.. vou rodar um Event_Scheduler no fim do mes:
  ALTER TABLE cad_form101_novo AUTO_INCREMENT = 1; 

codigo = PK Autonumerica
mes e ano puxo da data do pc.

deu certo será q e mt gato?
SINCLAIR 03/03/2016 13:38:57
#458573
Colega MESTRE,

Fico feliz que tenha conseguido, mas me chamou a atenção o zeramento da chave primária.

Quando você fizer o zeramento, o próximo número será 1, novamente. Ocorre que o número 1 já vai existir e dará erro de duplicidade de chave primária.

A menos que ano e mês sejam, também, chave primária, assim mesmo que o 1 (ou qualquer outro sequencial) se repita não haveria erro, visto que ano e mês não se repetiriam para o sequencial.

Assim, se a chave primária for composta, ou seja, o sequencial + o mês + o ano, então fluiria bem, sendo que para pegar o próximo sequencial do ano e mês bastaria solicitar max(sequencial) + 1 quando ano = (ano desejado) e mês = (mês desejado).

Tudo de bom.
MESTRE 03/03/2016 13:53:24
#458576
Citação:

:
Colega MESTRE,

Fico feliz que tenha conseguido, mas me chamou a atenção o zeramento da chave primária.

Quando você fizer o zeramento, o próximo número será 1, novamente. Ocorre que o número 1 já vai existir e dará erro de duplicidade de chave primária.

A menos que ano e mês sejam, também, chave primária, assim mesmo que o 1 (ou qualquer outro sequencial) se repita não haveria erro, visto que ano e mês não se repetiriam para o sequencial.

Assim, se a chave primária for composta, ou seja, o sequencial + o mês + o ano, então fluiria bem, sendo que para pegar o próximo sequencial do ano e mês bastaria solicitar max(sequencial) + 1 quando ano = (ano desejado) e mês = (mês desejado).

Tudo de bom.


é uma chave composta cara hehe..

consegui sem complicações.
SINCLAIR 03/03/2016 14:26:57
#458578
Colega Mestre,

Que bom que conseguiu.

Serve como parâmetro para futuros usuários com a mesma questão.

Sucesso em seu projeto.
MESTRE 03/03/2016 14:32:14
#458579
Citação:

:
Colega Mestre,

Que bom que conseguiu.

Serve como parâmetro para futuros usuários com a mesma questão.

Sucesso em seu projeto.


isso ai obrigado a todos pelo auxilio..
Página 2 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas