Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-12-2011
Avatar de Behemot
Behemot Behemot is offline
Miembro
 
Registrado: oct 2005
Posts: 15
Poder: 0
Behemot Va por buen camino
Parametros en Trigger

Saludos a todos, quisiera saber si se puede pasar de alguna forma un parámetro a un trigger.

Tengo este Trigger que funciona bien

Código SQL [-]
SET TERM ^ ;
CREATE TRIGGER TRI_ENTIDADES FOR TBL_ENTIDADES_ ACTIVE
BEFORE INSERT POSITION 0
AS
begin
    new.clave = gen_id(GEN_ENTIDADES,1);
end^
SET TERM ; ^

y quiero hacer algo como esto:

Código SQL [-]
SET TERM ^ ;
CREATE TRIGGER TRI_ENTIDADES FOR TBL_ENTIDADES_ ACTIVE
BEFORE INSERT POSITION 0
AS
begin
    new.clave = gen_id(GEN_ENTIDADES,1) + :Numero_x;
end^
SET TERM ; ^

Esa variable Numero_x se pude usar así? como se declara? como se le asigna el valor?

Gracias por su ayuda.
Responder Con Cita
  #2  
Antiguo 13-12-2011
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola.
Que yo sepa, Firebird no permite el paso de parámetros en sus trigger, puesto que responden a un evento y no se ejecutan explícitamente.

Por otra parte, los generadores normalmente se usan para dar valores únicos y correlativos
y la instrucción
Código SQL [-]
gen_id(GEN_ENTIDADES,1)
devuelve el valor actual del generador y lo incrementa en 1,
y lo que pretendes podría dar conflictos (coincidencia en los valores) si CLAVE esta definido con una Primary Key o está definido como UNIQUE.

EJP:
Valor inicial del generador = 1
Quiero incrementar en 12

Código SQL [-]
  new.clave = gen_id(GEN_ENTIDADES,1) + 12;
El generador tiene como valor 2 y NEW.Clave tendría como valor 13...
¿qué pasaría si ahora lo quiero incrementar en 9?

Código SQL [-]
  new.clave = gen_id(GEN_ENTIDADES,1) + 9;
Pues que el generador tiene como valor 3 y NEW.Clave tendría como valor 13 también...

¿Para qué necesitas que el campo CLAVE pegue esos saltos en la numeración?
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #3  
Antiguo 13-12-2011
Avatar de Behemot
Behemot Behemot is offline
Miembro
 
Registrado: oct 2005
Posts: 15
Poder: 0
Behemot Va por buen camino
La verdad la idea la he tomado de este post de -guillotmarc- Pero lo necesito hacer desde la BD, la variable como ves es una constante, en mi ejemplo me falto multiplicar por 100.

Cita:
select gen_id(GENERADOR_TABLA, 1) * 100 + UBICACION
from CONFIG
Excisten constantes a nivel de BD?, he visto en algún trigger algo asi @@VARIABLE pero no entiendo como funciona.
Responder Con Cita
  #4  
Antiguo 13-12-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Quizás puedas usar una tabla de "configuración" de donde obtendría ese dato.
Algo parecido a esto:

Código SQL [-]
select gen_id(GENERADOR_TABLA, 1) * (select numero from tbconfiguracion) from CONFIG
Responder Con Cita
  #5  
Antiguo 13-12-2011
Avatar de Behemot
Behemot Behemot is offline
Miembro
 
Registrado: oct 2005
Posts: 15
Poder: 0
Behemot Va por buen camino
Gracias Casimiro, creo que esa es la solución, solo debo controlar la sede en la tabla tbconfiguracion que mensionas. Gracias.
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 josi SQL 2 26-03-2008 03:27:57
Un trigger que dispara un procedimiento que dispara un trigger... sitrico Firebird e Interbase 5 04-06-2007 22:05:13
Parametros Opcionales no Parametros por defecto Velia Varios 7 19-08-2006 15:18:42
PAsarle parametros a un trigger .. ingel SQL 2 19-05-2006 18:36:32
Trigger inferno Firebird e Interbase 1 26-10-2005 21:25:43


La franja horaria es GMT +2. Ahora son las 15:18:16.


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