Ver Mensaje Individual
  #5  
Antiguo 31-01-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 24
guillotmarc Va por buen camino
Hola.

Utilizar un programa que te genere un SQL para construir los triggers, está muy bien, pero significa que cada vez que cambias un campo tendrás que reconstruir los triggers.

¿ No sería mejor crear un trigger que se adapte a los campos que tengas en cada momento ?, de esta manera, una vez creado el trigger ya te puedes olvidar de él, por más que modifiques la tabla.

Para ello, en el trigger tienes que recorrer (con un for select) las tablas de sistema, para ir obteniendo el nombre de los campos en la tabla, y para cada campo, utilizas una sentencia dinámica (con execute statement) para verificar si ha cambiado de valor.

NOTA: Esta consulta te devuelve todos los campos de una Tabla

select f.rdb$field_name
from rdb$relation_fields f
join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
and r.rdb$view_blr is null
and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
and f.rdb$relation_name = :TABLA
order by f.rdb$field_position

Saludos.

Última edición por guillotmarc fecha: 31-01-2010 a las 19:23:44.
Responder Con Cita