Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-02-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
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

Última edición por jsanchez fecha: 20-02-2007 a las 17:39:09.
Responder Con Cita
  #2  
Antiguo 20-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
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 ...
__________________
Sotoca Web
Responder Con Cita
  #3  
Antiguo 20-02-2007
jsanchez jsanchez is offline
Miembro
 
Registrado: may 2003
Posts: 90
Poder: 21
jsanchez Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 20-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
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á ...
__________________
Sotoca Web
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Trigger inferno Firebird e Interbase 1 26-10-2005 21:25:43
trigger jaime cotino Firebird e Interbase 3 10-06-2004 19:10:48
Un indice compuesto por dos campos Javier_A Conexión con bases de datos 5 12-11-2003 15:21:41
trigger acertij022 Firebird e Interbase 6 20-10-2003 19:20:31
Campo compuesto NickName Firebird e Interbase 5 20-05-2003 22:51:53


La franja horaria es GMT +2. Ahora son las 06:40:44.


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
Copyright 1996-2007 Club Delphi