PDA

Ver la Versión Completa : Cómo cambiar el tamaño de un campo tipo varchar


subzero
11-10-2007, 14:13:05
Hola,


Estoy tratando de cambiar el tamañao de un campo de 7 caracteres a 8 caracteres en FIREBIRD 2.0, cabe anotar que el campo es de tipo "varchar", no se encuentra relacionado con ninguna TABLA, VISTA o PROCEDIMIENTO, lo he realizado desde EMS y desde el IBExpert, el script que se muestra para realizar el cambio es el siguiente;

ALTER TABLE PROTOCOLOS_CARACTERISTICAS
ALTER COLUMN PRO_CAR_CODIGO
TYPE VARCHAR(8);

Pero al ejecutarlo me muestra esto:

fmCompile.quCompile:
This operation is not defined for system tables.unsuccessful metadata update.
MODIFY RDB$RELATION_FIELDS failed.
action cancelled by trigger (1) to preserve data integrity.
Cannot update index segment used by an Integrity Constraint.

Agradezco, si alguien conoce la manera o el porque se muestra este mensaje.

jhonny
11-10-2007, 15:59:10
Atención: Lo siguiente solo es un trozo de codigo que nunca he probado, solo es una suposición de lo que haria FireBird internamente a la hora de modificar la estructura, hazlo en una base de datos de prueba para ver como te va y nos cuentas ;).

Haz la siguiente consulta:


select RDB$Field_source from rdb$relation_fields where rdb$field_name='NombreDelCampoEnCuestion' and
RDB$relation_name='NombreDeLaTablaDondeEstaElCampoEnCuestion'


Eso te debe devolver un valor parecido al siguiente:

RDB$2519

Una vez tengas ese valor haces:


update rdb$fields set rdb$field_length='TamanoNuevo' where
rdb$field_name='ElValorQueTeDevolvioAnterior(En nuestro caso RDB$2519)'


Espero que esta suposición funcione correctamente y no vaya a dañar nada en tu base de datos :).

subzero
12-10-2007, 05:43:55
De antemano te agradezco Jhonny, lo que hice fue borrar todas la relaciones que involucraban a mi tabla, luego quite la llave primaria sobre el campo que desea cambiar el tamaño lo edite aumente los caracteres y listo..... pero antes de esto utilice lo que me aconsejaste y me seguia mostrando el mismo error.... igual muchas gracias

jhonny
12-10-2007, 14:57:27
Ahhh, entonces la cuestión era de llaves foraneas... es que como habias dicho que esa tabla no tenia relación con ninguna otra, pues por eso busque otra medida :), de todas formas que bueno que hayas solucionado el problema ;).