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)
-   -   trigger compuesto (https://www.clubdelphi.com/foros/showthread.php?t=40544)

jsanchez 20-02-2007 18:35:57

trigger compuesto
 
Hola foro

Tengo una tabla de facturas con un trigger y un generador

Generador:
Código:

CREATE GENERATOR GEN_FACTURA;
SET GENERATOR GEN_FACTURA TO 1

Trigger:
Código:

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 19: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 20: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 22: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:

Código SQL [-]
CREATE GENERATOR GEN_FACTURA_IDFACTURA
Código SQL [-]
SET GENERATOR NEW_GENERATOR_IDFACTURA TO 1

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


La franja horaria es GMT +2. Ahora son las 00:58:58.

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