FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Modificar campo
Hola a todos en esta ocasion se me presento el siguiente problema. Trabajo con Interbase 6.5 y Delphi 7.
El caso es que ya tengo la aplicacion trabajando con normalidad. Pero pasa que me llegaron unos documentos cuyo numero de digitos es mas largo que el que asigne inicialmente al campo de la table correspondiente en mi base de datos. Inicialmente esta configurada con un tamaño de 6 ya que no se esperaban documentos de un longitud mayor. Intente ejecutar la siguiente instruccion desde el IBConsole para agrandar el tamaño del campo: Código SQL [-] ALTER TABLE MOVCILINDROS ALTER COLUMN DOCUMENTO TYPE VARCHAR(10); Pero me da el siguiente error: Unsuccessful metadata update Column DOCUMENTO from table MOVCILINDROS is referenced in RDB$194 Statement: ALTER TABLE MOVCILINDROS ALTER COLUMN DOCUMENTO TYPE VARCHAR(10) Ya que tengo creada una vista sobre esta tabla y un par de procedimientos almacenados que usan dicha vista. La verdad no se como hacer mas grande el campo ya que tiene datos que no puedo perder. Que me recomiendan hacer?? Desde ya gracias por su atencion |
#2
|
||||
|
||||
Puedes crear la base de datos vacía con la nueva estructura y luego haces un 'ibpump' de los datos de la vieja a la nueva.
|
#3
|
||||
|
||||
Gracias por la respuesta pero disculpa mi ignorancia podrias explicarme un poco como es un ibpump??
|
#4
|
||||
|
||||
En casos así, lo que hago normalmente es algo rudimentario: "Comento" las referencias, hago el cambio y entonces "descomento" las referencias, actualizando lo que tenga que actualizar.
Por ejemplo, en la vista puedes encerrar la declaración de la columna y su referencia en el "Select" entre los símbolos de comentario "/*" y "*/" (o bien "--" al inicio de la línea). Entonces guardas la vista, luego haces el cambio en la tabla y finalmente quitas esos símbolos de comentario de la vista volviendo a guardar ésta. También puedes comentar sólo la referencia del "Select" que tiene la vista (y no así la declaración de esa columna en la misma), sustituyéndola por un valor literal (digamos que en lugar de "Tabla.CampoACambiar" pongas un simple 3). Esto para que la vista pueda guardarse sin que haya problema por el hecho de que algún procedimiento almacenado hace referencia a sus columnas. Espero te sirva. Saludos. |
#5
|
||||
|
||||
Gracias por las respuestas voy a probarlas
|
#6
|
||||
|
||||
Problema resuelto
Muchas gracias ya logre resolver mi problema.
En caso de que alguien le haya pasado lo mismo contare lo que hice. Me decidi por el consejo de Casimiro sobre hacer un ibpump. Primero copie toda la definicion de mi base de datos e hice los cambios respectivos (Esa fue la parte mas trabajosa). Despues, previo Backup, utilice el ibpump que descargue de aqui. Todo eso lo hice en mi casa con mi copia de la DB. Despues de ver que todo funcionaba bien todo fue cuestion de modificar la propiedad size de mis objetos de campo y listo. De verdad gracias por la ayuda me salvaron de un lio grande. Pero esta experiencia me sirvio para mejorar mis conocimientos. Una vez mas gracias a todos. |
#7
|
||||
|
||||
Para la siguiente vez que te toque hacer algo parecido:
Para extraer la estructura de la BD puedes usar programas como IBexpert, Flamerobin, etc. tienen una opción que se llama "Extraer metadata", esta opción te genera un fichero.sql con la estructura de la BD, así que sólo has de modificar la definición de ese campo y ejecutar ese script sql para volver a generar la BD con la nueva definición. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
modificar un campo | pronto7 | SQL | 2 | 15-06-2010 10:04:58 |
Modificar Campo Calculado | RolphyReyes | Firebird e Interbase | 12 | 16-01-2009 21:30:23 |
Modificar una campo | dmagui | Firebird e Interbase | 2 | 26-11-2005 19:50:09 |
Modificar campo ya existente | FunBit | MySQL | 4 | 02-08-2005 09:01:43 |
Modificar un campo en interbase | Ronny | Conexión con bases de datos | 1 | 13-01-2005 22:37:38 |
|