AUTO-INCREMENT DE ACORDO COM UM CAMPO DA TABELA

X16X 20/08/2009 13:10:10
#320423
Bom pessoal,

Estou criando um SP no mysql , para os seguintes fins:

Existe uma tabela chamada CONHECIMENTO , e nessa tabela existe o campo serie e produto,
gostaria de saber se é possivel de alguma forma usar as funcoes do mysql um auto-increment talvez,
para que eu possa incrementar o campo serie de acordo com determinado produto.

Ex:

serie produto
1 SAL
1 FERRO
2 SAL
2 FERRO
3 FERRO
4 FERRO
3 SAL
4 SAL

Queria evitar criar uma sp grande (tempo) e usar alguma funcao especifica do mysql.

flw's.


X16X 20/08/2009 14:13:31
#320434
Bom pessoal , fiz dessa forma e felismente esta funcionando sem problemas.

Mais ainda assim gostaria de saber se o mysql consegui fazer essa tarefa sem necessidade de uma funcao.

  
DELIMITER $$

DROP PROCEDURE IF EXISTS 'cu_add_conhecimentounica' $$
CREATE DEFINER='root'@'localhost' PROCEDURE 'cu_add_conhecimentounica'(
IN trabalho varchar(255),
IN codremetente varchar(255),
IN coddestinatario varchar(255),
IN codconsignatario varchar(255),
IN codproduto varchar(255),
IN grpproduto varchar(255),
IN pagfrete varchar(255),
IN notafiscal varchar(255),
IN datanfiscal varchar(255),
IN vrlmercadoria varchar(255),
IN opicms varchar(255),
IN cpeso varchar(255),
IN cvrlfrete varchar(255),
IN cbase varchar(255),
IN cpedagio varchar(255),
IN caliquota varchar(255),
IN cvrlicms varchar(255),
IN cvrltotal varchar(255),
IN codcoleta varchar(255),
IN codentrega varchar(255),
IN rpeso varchar(255),
IN rfretecarr varchar(255),
IN rpedagio varchar(255),
IN rtotalfrete varchar(255),
IN placaveic varchar(255),
IN placacarr varchar(255),
IN categveic varchar(255),
IN motorista varchar(255)
)
BEGIN

declare v_numero,v_maximo,v_serie varchar(255);

select count(cu_numero) INTO v_numero from tt_conhecimento where cu_codproduto = codproduto ;

if v_numero = 0 then
set v_serie = lpad(1,4,0);
end if;

if v_numero > 0 then
select max(cu_numero) INTO v_maximo from tt_conhecimento where cu_codproduto = codproduto ;
set v_serie = v_maximo + 1;
set v_serie = lpad(v_serie,4,0);
end if;

INSERT INTO tt_conhecimento
(
cu_numero,
cu_trabalho,
cu_codremetente,
cu_coddestinatario,
cu_codconsignatario,
cu_codproduto,
cu_prodgrupo,
cu_pgfrete,
cu_notafiscal,
cu_datanfiscal,
cu_vlrmercadoria,
cu_opicms,
cu_cpeso,
cu_cvlrfrete,
cu_cbase,
cu_cpedagio,
cu_caliquota,
cu_cvlricms,
cu_cvlrtotal,
cu_codcoleta,
cu_codentrega,
cu_rpeso,
cu_rfretecarr,
cu_rpedagio,
cu_rtotalfrete,
cu_placaveic,
cu_placacarr,
cu_categveic,
cu_motorista
)values(
v_serie,
trabalho,
codremetente,
coddestinatario,
codconsignatario,
codproduto,
grpproduto,
pagfrete,
notafiscal,
datanfiscal,
vrlmercadoria,
opicms,
cpeso,
cvrlfrete,
cbase,
cpedagio,
caliquota,
cvrlicms,
cvrltotal,
codcoleta,
codentrega,
rpeso,
rfretecarr,
rpedagio,
rtotalfrete,
placaveic,
placacarr,
categveic,
motorista
) ;

END $$

DELIMITER ;


flw's, [S26]
Tópico encerrado , respostas não são mais permitidas