Ir para conteúdo

POWERED BY:

Arquivado

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

Raimundo Junior

Campo autoincrementado vinculado ao ano

Recommended Posts

Pessoal,Tenho uma aplicação de abertura de ordem de serviço em asp que consulta um banco de dados em mysql.Gostaria de criar um campo no banco de dados para gerar o número da ordem de serviço, onde essa numeração seria um número autoincrementado/o ano (N/ANO).Resolvendo isso.... como criar uma forma em asp ou no próprio banco de dados, não sei, que zere essa numeração em cada mudança de ano?Quem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só faço este controle via aplicação mesmo.Desconheço auto incremento que tenha dependência de outro campo.Então ou você lê o último registro do ano + 1 ou guarda estes dados em uma outra tabela de parametrização.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehehhe cria o campo id (auto_inc) e o campo cod_OS (varchar) que receberá o id/anoacho que só assim mesmo para fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,Só que aí terremos o seguinte problema:Nem sempre o "campo cod_OS" será id/ano. Por exemplo: Em 1º de janeiro de 2007 teria que zerar o campo id, para que fique correto 1/2007, como id é a chave primária, não pode ser feito isso.Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já tentou algo tipo?

 

CREATE TABLE teste (
	ano INT NOT NULL,
	num INT NOT NULL AUTO_INCREMENT,
	PRIMARY KEY (ano,num)
);

Compartilhar este post


Link para o post
Compartilhar em outros sites

não se você fizer a chave primaria ser com o ano tb (ta eu seiq fere uma forma normal) e fazer uma sp zerar o auto incremento (isso eh possivel) qndo mudar de anodeve ter um jeito mais facilmas eh uma ideia ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prog com a sua estrutura com crtza eh o modo mais facil de fazer porem devera usar uma trigger ou sp para zerar o auto_incremento na virada do ano rraaaaaaaaaaapow adoro sps ehhehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prog com a sua estrutura com crtza eh o modo mais facil de fazer porem devera usar uma trigger ou sp para zerar o auto_incremento na virada do ano rraaaaaaaaaaapow adoro sps ehhehehe

Sou um leigo no assunto.Tem como me ajudar sendo mais detalhista?Agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raimundo, você está programando isto em que ?

 

O Suissa vai querer me matar, http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif , mas é que talvez seja mais fácil para o Raimundo fazer este controle na aplicação mesmo, pelo menos num primeiro momento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu to falando grego?! :P

O MySQL já faz isso automático.

 

Manual:

http://dev.mysql.com/doc/refman/4.1/en/exa...-increment.html

 

mysql> create database teste;
Query OK, 1 row affected (0.09 sec)

mysql> show databases;
+--------------------+
| Database		   |
+--------------------+
| information_schema | 
| mysql			  | 
| teste			  | 
+--------------------+
3 rows in set (0.00 sec)

mysql> use teste;
Database changed
mysql> CREATE TABLE teste (
	->	 ano INT NOT NULL,
	->	 num INT NOT NULL AUTO_INCREMENT,
	->	 PRIMARY KEY (ano,num)
	-> );
Query OK, 0 rows affected (0.00 sec)

mysql> insert into teste (ano) values (2005);
Query OK, 1 row affected (0.00 sec)

mysql> insert into teste (ano) values (2005);
Query OK, 1 row affected (0.00 sec)

mysql> insert into teste (ano) values (2005);
Query OK, 1 row affected (0.00 sec)

mysql> select * from teste;
+------+-----+
| ano  | num |
+------+-----+
| 2005 |   1 | 
| 2005 |   2 | 
| 2005 |   3 | 
+------+-----+
3 rows in set (0.00 sec)

mysql> insert into teste (ano) values (2006);
Query OK, 1 row affected (0.00 sec)

mysql> select * from teste;
+------+-----+
| ano  | num |
+------+-----+
| 2005 |   1 | 
| 2005 |   2 | 
| 2005 |   3 | 
| 2006 |   1 | 
+------+-----+
4 rows in set (0.00 sec)

mysql> insert into teste (ano) values (2006);
Query OK, 1 row affected (0.00 sec)

mysql> insert into teste (ano) values (2006);
Query OK, 1 row affected (0.00 sec)

mysql> insert into teste (ano) values (2007);
Query OK, 1 row affected (0.01 sec)

mysql> insert into teste (ano) values (2007);
Query OK, 1 row affected (0.00 sec)

mysql> select * from teste;
+------+-----+
| ano  | num |
+------+-----+
| 2005 |   1 | 
| 2005 |   2 | 
| 2005 |   3 | 
| 2006 |   1 | 
| 2006 |   2 | 
| 2006 |   3 | 
| 2007 |   1 | 
| 2007 |   2 | 
+------+-----+
8 rows in set (0.00 sec)

mysql> drop database teste;
Query OK, 0 rows affected (0.16 sec)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,Muito bem perfeito!Pela primeira vez alguém repondeu de modo preciso a minha dúvida em um forum de discursão. PARABÉNS!!!!A última pergunta:Tem como o mysql incluir automaticamente o ano corrente, ou será feito feito via aplicação?Desde já agradeço a grande ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

caraleooooooooooo tb naum sabia q o Mysql fazia isso automaticamente naum!!tem simselect YEAR(CURDATE())e tb tem MONTH e DAY \o/

Cara,Muito bem perfeito!Pela primeira vez alguém repondeu de modo preciso a minha dúvida em um forum de discursão. PARABÉNS!!!!A última pergunta:Tem como o mysql incluir automaticamente o ano corrente, ou será feito feito via aplicação?Desde já agradeço a grande ajuda.

você quer dizer, Pela primeira vez alguém me passou tudo pronto e eu não precisei me coçar nem testar nenhuma alternativa. <_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

caraleooooooooooo tb naum sabia q o Mysql fazia isso automaticamente naum!!tem simselect YEAR(CURDATE())e tb tem MONTH e DAY \o/

Cara,Muito bem perfeito!Pela primeira vez alguém repondeu de modo preciso a minha dúvida em um forum de discursão. PARABÉNS!!!!A última pergunta:Tem como o mysql incluir automaticamente o ano corrente, ou será feito feito via aplicação?Desde já agradeço a grande ajuda.

você quer dizer, Pela primeira vez alguém me passou tudo pronto e eu não precisei me coçar nem testar nenhuma alternativa. <_<
Então....É possivel colocar isso, select YEAR(CURDATE()), para ser o valor default?Onde ao ser adicionado qualquer dado na tabela esse campo ano seja preenchido automaticamente com o ano corrente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas claro fiosoh tu botar essa expressão no teu insert ;)ou ateh no DEFAULT do campops: pouts num to lembrando se o MySQL tem default, ams deve ter tds os outros bancos tem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

prefiro fazer manual, pois, pode ser qe futuramente você precise implantar isso num banco de dados diferente do mysqlbom.. cada caso é um caso

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.