Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Bases de datos > Firebird e Interbase
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 19/04/2004
feruiz feruiz is offline
Miembro
 
Join Date: Apr 2004
Location: 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
Reply With Quote
  #2  
Old 19/04/2004
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
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
Reply With Quote
  #3  
Old 19/04/2004
kinobi's Avatar
kinobi kinobi is offline
Miembro
 
Join Date: May 2003
Posts: 2,621
Poder: 26
kinobi Va por buen camino
Hola y bienvenido al Club,

Quote:
Originally Posted by 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.

Quote:
Originally Posted by 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.

Quote:
Originally Posted by 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.
Reply With Quote
  #4  
Old 28/04/2004
feruiz feruiz is offline
Miembro
 
Join Date: Apr 2004
Location: 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
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 06:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi