Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Incrementar campo según el valor de otro (https://www.clubdelphi.com/foros/showthread.php?t=58915)

subzero 06-08-2008 03:03:16

Incrementar campo según el valor de otro
 
Buenas....

La razon de este tema es si alguien lo ha hecho?, es de que manera se puede incrementar un campo según el valor de otro dentro de una misma tabla (firebird 2.0), es decir si tengo un un tipo de documento A,B,C que serán guardados constantemente en mi tabla la idea es que al momento de hacer la inserción del registro un trigger pueda determinar cual es el tipo de documento y según este realizar un incremento en la columna donde se almacenan los valores, tomando como referencia el número máximo guardado segun el tipo, un ejemplo

A - 1
B - 1
C - 1
........
C - 1
A - 1
A - 2
C - 2
B - 1
C - 3

Explicación: todos arrancan en "1", pero luego según la inserción de registros el campo que lleva los números aumenta, como nos podemos dar cuenta los tipos de documentos A y C crecio su campo asociado

Kipow 06-08-2008 04:56:46

Algo asi

Código Delphi [-]
create trigger MITABLA_AI for MITABLA 
active AFTER INSERT position 0 as 
begin    
     UPDATE MITABLA SET Columna_Valor = SELECT MAX(Columna_Valor) + 1                                       
                                                          FROM MITABLA                                        
                                                          WHERE Tipo = NEW.Tipo
     WHERE Tipo = NEW.Tipo    
end

celades1 06-08-2008 06:23:05

hola

yo utilizo el trigger BI y asi evito un innecesario udate



Código SQL [-]
if  (new.documento='A') then
select max(campo_a)+1 from tabla into new.campo_a;
else if  (new.documento='B') then
select max(campo_b)+1 from tabla into new.campo_b;
else if  (new.documento='C') then
select max(campo_c)+1 from tabla into new.campo_c;

No se si eso es lo que quieres, pero la idea e modificar el valor antes de la insercion, ya que si haces update del AI, luego debes controlar los eventos BU i AU


Saludos

subzero 06-08-2008 21:41:52

Gracias, por tan eficases respuestas, voy a probarlo, sin embargo cabe anotar que los documentos como A,B,C... serán creados por el usuario por lo tanto debe hacerse de forma dinámica.


La franja horaria es GMT +2. Ahora son las 09:48:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi