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 08-03-2007
LuCkY_007 LuCkY_007 is offline
Miembro
 
Registrado: dic 2005
Posts: 23
Poder: 0
LuCkY_007 Va por buen camino
Evitar Triggers Al Vaciar Tabla [Firebird]

Hola. Gracias de Antemano a todos

Ahora vamos al meollo, tengo una base de datos con 436 tablas , 956 procedures, 1334 Triggers etc etc... el caso es que es grandiiiiisima, el problema viene ahora, TENGO QUE VACIARLA necesito alguna manera de hacer que al borrar la tabla, evite los triggers y claves primarias/ajenas.
Responder Con Cita
  #2  
Antiguo 08-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Primero haz una copia de la base de datos, vía copiar y pegar y empieza a probar con ella.

Consiste en ver las tablas del sistema y juguetear un poco con ella, es delicado, por eso debes hacer una copia antes.

Suponiendo que usas Ib Expert:

(debes activa la opción de "ver tablas de sistema")

Si en concreto miras la tabla: RDB$TRIGGERS y vas a la pestaña Data, verás el contenido de la misma. Ordena por la columna RDB$SYSTEM_FLAG, observarás que si el valor es <null> se trata de un trigger creado por tí, además tienes la columna RDB$TRIGGER_INACTIVE que siendo igual a cero, estará activo.

Lo que se trataría es acceder a esas tablas del sistema, extraer la información que se va a modificar. Modificar la información que contiene, y al final restaurar la configuración inicial.

Lo de extraer la información, es que, por ejemplo, una vez modificado la columna RDB$TRIGGER_INACTIVE y establecerlo a null, (para desactivar el trigger), hecho esto, ya no sabemos qué triggers debemos volver a activar, por eso debemos guardar al menos los nombres de los disparadores para restaurar la configuración inicial.

El problema es identificar qué valores tiene cada uno y cual modificar, de ahí que hagas una copia, realices todos los cambios, restaurar la configuración inicial y comprobar que realmente ha funcionado (fácil... nadie ha dicho que lo sea).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 08-03-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Hola LuCkY_007

si lo que quieres es tener la base de datos totalmente vacia de datos una solución es utilizar alguna aplicacion de gestión de Firebird, (IBExpert, SQLHammer por ejemplo) y obtener los metadatos de la base de datos. Desde IBExpert es así: Tools->Extract Metadata,

luego lo ejecutas y tienes la base limpia.

Saludos
TJose
Responder Con Cita
  #4  
Antiguo 08-03-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Hola LuCkY_007

Perdón, parece que te contesté cualquiera en el post anterior, me confundí con esta parte de la oración

Cita:
tengo una base de datos con 436 tablas , 956 procedures, 1334 Triggers etc etc... el caso es que es grandiiiiisima, el problema viene ahora, TENGO QUE VACIARLA
hablabas de la base de datos

Has probado de desactivando los triggers?

Saludos
TJose
Responder Con Cita
  #5  
Antiguo 09-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
TJose, y digo yo, ¿qué diferencia hay entre vaciar una base de datos, y crear una nueva, con idéntica construcción, pero sin datos?

Creo que tu solución es perfecta y muy simple de ejecutar. Incluso tendría los generadores en el último valor usado. Si se quieren reiniciar a cero, es tan solo un pequeño script.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 09-03-2007 a las 01:25:16.
Responder Con Cita
  #6  
Antiguo 09-03-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
Hola Lepe

es que no me queda en claro si se trata de una tabla en particular o toda la base de datos

Saludos
TJose
Responder Con Cita
  #7  
Antiguo 09-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Eso mejor que lo comente el autor de la pregunta, yo creo que se trata de toda la base de datos.

De todas formas, tu solución implica escribir 0 líneas de código. Se puede extraer todos los datos y metadatos de todas las tablas excepto de la que se quiere vaciar, después se extrae los metadatos de esa tabla en particular agregándolo al mismo script.

El proceso de extracción será largo, no lo dudo, pero no tendremos que rompernos la cabeza con las tablas de sistema.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 21-03-2007
LuCkY_007 LuCkY_007 is offline
Miembro
 
Registrado: dic 2005
Posts: 23
Poder: 0
LuCkY_007 Va por buen camino
Me referia a toda la base de datos... Con lo de extract metadata creo que se cepillaba los triggers y demas solo dejaba las tablas... pero no me acuerdo bien, el caso esque lo he solucionado por que tenia una copia de la BD vacia por ahi (ufff). Aun asi me encantaria saber como poder hacerlo, por que seguro lo que voy a necesitar otra vez...
Responder Con Cita
  #9  
Antiguo 21-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Extrayendo los metadatos, se extrae todo. Mira con detenimiendo las opciones, en concreto, la casilla de verificación que dice "Extract all" .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, 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
Vaciar tabla de base Paradox zugazua2001 Conexión con bases de datos 3 29-05-2007 01:32:42
erroro al vaciar una tabla jzginez Firebird e Interbase 2 18-11-2005 16:31:18
Vaciar tabla ADO Daltor Conexión con bases de datos 3 21-05-2005 18:32:03
vaciar una tabla arc22 Conexión con bases de datos 4 18-06-2004 16:28:18
velocidad al vaciar una tabla??? aram2r Conexión con bases de datos 4 09-03-2004 17:56:37


La franja horaria es GMT +2. Ahora son las 12:24:57.


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