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 19-04-2004
feruiz feruiz is offline
Miembro
 
Registrado: abr 2004
Ubicación: Madrid
Posts: 10
Poder: 0
feruiz Va por buen camino
Post Averiguar nombre del Generator de una tabla

Me gustaría saber si hay alguna manera de hayar el nombre del generator a partir del nombre de una tabla, para poder utilizar la función GEN_ID(). Yo he llegado hacer esto, ejemplo:

SELECT R.rdb$relation_name, T.rdb$trigger_source
FROM rdb$relations R
LEFT JOIN rdb$triggers T ON T.rdb$relation_name = R.rdb$relation_name
WHERE R.rdb$relation_name = 'PROVINCIAS'

Si no hay manera de hayarlo otra pregunta. ¿como puedo sacar de este campo rdb$trigger_source que contiene el contenido del trigger, el GEN_IDPROVINCIA que es lo que me interesa? No encuentro funciones de cadena suficientes para poder hacer esto, me faltaría la función de SQL (Patindex).

(AS
BEGIN
IF (NEW.IDPROVINCIA IS NULL) THEN
NEW.IDPROVINCIA = GEN_ID(GEN_IDPROVINCIA, 1);
END)


Gracias
Responder Con Cita
  #2  
Antiguo 19-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Pues no hay nada que relacione el nombre de una tabla con el de un generador. Te recomiendo que definas un estándar, a partir del cual, no habrá necesidad de buscar nada, pues los triggers pueden ser muchos y en algun momento quizas estén sin el fuente (solo en blr con lo que no podrias buscar en él).

simplemente, si una tabla se llama cliente y el campo se llama id, su generador estándar podria llamarse gid_cliente, con lo que te bastaría concatenar el nombre la letra G, el nombre del campo, el caracter _ y el nombre de la tabla.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 19-04-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola y bienvenido al Club,

Cita:
Empezado por feruiz
Me gustaría saber si hay alguna manera de hayar el nombre del generator a partir del nombre de una tabla,
No, los generadores no están asociados a tablas (u otros objetos de la base de datos) concretas.

Cita:
Empezado por feruiz
Si no hay manera de hayarlo otra pregunta. ¿como puedo sacar de este campo rdb$trigger_source que contiene el contenido del trigger,
Ten en cuenta que el código fuente de triggers y procedimientos almacenados puede ser eliminado y tendrías ese campo, rdb$trigger_source, vacío, a pesar de que el trigger siguiera existiendo (en formato BLR) dentro de la base de datos.

Cita:
Empezado por feruiz
el GEN_IDPROVINCIA que es lo que me interesa? No encuentro funciones de cadena suficientes para poder hacer esto, me faltaría la función de SQL (Patindex).
Esa función: Patindex, ¿es SQL estándar?

De todas formas, busca alguna función en las muchas bibliotecas de UDF's que hay disponibles (consejo: Google) y, si no encuantras lo que necesitas, siempre puedes montarla tú.

Saludos.
Responder Con Cita
  #4  
Antiguo 28-04-2004
feruiz feruiz is offline
Miembro
 
Registrado: abr 2004
Ubicación: Madrid
Posts: 10
Poder: 0
feruiz Va por buen camino
Al final he tenido que crerar un método en un clase para que pasando el nombre de la tabla y el nombre del generator me devuelva el currentValue del maestro para poder introducir el detalle.

Los nombres de los generator los he cambiado, los he puesto poniendo G_ seguido del nombre de la tabla, para que sea más fácil de recordar sin tener que ir a verlos.

El PatIndex es de SQL Server, pero vamos con lo que he hecho ya no lo necesito.

Muchas gracias a todos.

Nando
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


La franja horaria es GMT +2. Ahora son las 19:35:48.


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