PDA

Ver la Versión Completa : trigger compuesto


jsanchez
20-02-2007, 17:35:57
Hola foro

Tengo una tabla de facturas con un trigger y un generador

Generador:
CREATE GENERATOR GEN_FACTURA;
SET GENERATOR GEN_FACTURA TO 1

Trigger:
CREATE TRIGGER INC_FACTURA FOR FACTURA BEFORE INSERT POSITION 0 AS
BEGIN
NEW.CODIGO = GEN_ID(GEN_FACTURA,1);
END

Donde FActura es la tabla cuya llave primaria es Codigo.

El caso es que ahora lo que quiero hacer es hacer una llave primaria compuesta, es decir ahora sería Codigo,Local (para saber de qué local es la factura)
Como se harían en este caso el Generador y el Trigger?
He estado probando pero no lo he conseguido.

La idea es que haya una data así:

Codigo Local
1 1
2 1
3 1
1 2
2 2
3 2

fdelamo
20-02-2007, 18:46:00
Con un generador no podrás conseguir los dos valores, pero si uno (la factura por ejemplo), y hacer un select max()+1 para el otro valor ¿no?

Edito: Aunque ahora que lo pienso ... el segundo campo siempre será uno ...

jsanchez
20-02-2007, 19:24:07
Pero es que lo que me interesa es que lleve un consecutivo "Codigo" diferente por cada local, es decir que haya una factura codigo 1 para el local 1, y otra con codigo 1 para local 2, etc. Para otras tablas no necesito el trigger, y via codigo si puedo hacerlo, lo que pasa es que para la facturación por cuestiones de cantidad de ordenadores funcionando a la vez, si es necesario el uso de triggers.

fdelamo
20-02-2007, 21:11:36
A ver si me entero, lo que quieres es un generador para cada local, y otro generador para las facturas de cada local ...

¿Por que no pruebas a crear un generador por código por cada local?, es decir, cada vez que crees un local, crea un generador asociado para sacar de ahí los numeros de factura:

CREATE GENERATOR GEN_FACTURA_IDFACTURA
SET GENERATOR NEW_GENERATOR_IDFACTURA TO 1

esto desde delphi si que se puede hacer... pero desde un trigger no se si se podrá ...