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)
-   -   Averiguar nombre del Generator de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=9269)

feruiz 19-04-2004 17:00:03

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

jachguate 19-04-2004 17:09:02

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.

;)

kinobi 19-04-2004 17:12:12

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.

feruiz 28-04-2004 10:43:02

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


La franja horaria es GMT +2. Ahora son las 23:07:38.

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