FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
Hola LuCkY_007
Perdón, parece que te contesté cualquiera en el post anterior, me confundí con esta parte de la oración Cita:
Has probado de desactivando los triggers? Saludos TJose |
#5
|
||||
|
||||
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 02:25:16. |
#6
|
|||
|
|||
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 |
#7
|
||||
|
||||
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. |
#8
|
|||
|
|||
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...
|
#9
|
||||
|
||||
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. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Vaciar tabla de base Paradox | zugazua2001 | Conexión con bases de datos | 3 | 29-05-2007 02:32:42 |
erroro al vaciar una tabla | jzginez | Firebird e Interbase | 2 | 18-11-2005 17:31:18 |
Vaciar tabla ADO | Daltor | Conexión con bases de datos | 3 | 21-05-2005 19:32:03 |
vaciar una tabla | arc22 | Conexión con bases de datos | 4 | 18-06-2004 17:28:18 |
velocidad al vaciar una tabla??? | aram2r | Conexión con bases de datos | 4 | 09-03-2004 18:56:37 |
|