PDA

Ver la Versión Completa : Error al intentar borrar constraint foreign key


rfernandez
01-09-2008, 12:12:26
Buenas foreros,
Ya hace tiempo que me ocurre lo siguiente, hasta ahora lo habia ignorado pero ahora necesito que funcione y ya no se que mirarme.

Tengo una BBDD firebird 1.5 con un tabla TABLA1 que tiene un campo CAMPO1 que atraves de una contraint de foreign key apunta a TABLA2.

TABLA 2 esta vacia, no hay datos.

Lo que quiero hacer es borrar el CAMPO1 de la TABLA1, me da un error.
Deduzco que primero debo borrar al constraint de fk de TABLA2, pues me da siempre el siguiente error y no lo entiendo y curiosamente es el mismo error que me da si quiereo borrar CAMPO1 de la TABLA1.

unsuccefull medatada update
ERASE RDB$RELATION_CONSTRAINTS failed.
action cancelled by trigger (1) to preserve data integrity.
Cannon delete trigger user by a CHECK Constraint.

No lo entiendo, no hay ninguna check.
Que data integrity si no hay datos?

Me da que es un error de checks interno de firebird pero no se que hacer.

Agracedir ayuda.
Gracias mil.

maeyanes
01-09-2008, 15:14:11
Hola...

Y el campo de la TABLA1 es una clave primaria o un campo único?

Si es así, prueba primero quitándole esa condición a tu campo y luego intenta eliminar la clave foranea...


Saludos...

tcp_ip_es
01-09-2008, 15:33:08
puede que esto te ayude....

http://www.clubdelphi.com/foros/showthread.php?t=58498

ó

http://www.clubdelphi.com/foros/showthread.php?t=57560

yo es que utilizo MySQL :D

rfernandez
02-09-2008, 12:54:15
Buenas,

El CAMPO1 de la TABLA1 es clave foranea de la clave principal de TABLA2, y no es un campo unico.

hach
10-09-2008, 13:45:02
Publica aqui las estructuras de ambas tablas (texto que te da el DDL)
y quiza podramos encontar el problema

Saludos

rfernandez
08-10-2008, 23:36:02
El problema es raro raro. Antes de publicar lo que me comentais comentaros otra cosa.

Si intento modificar el check y hacerlo inactivo para que no me de mas problemas igualmente me da error.

Hago lo siguiente:

update rdb$triggers
set rdb$trigger_inactive = 1
where rdb$trigger_name = "CHECK_4"

me dice

action canceled by trigger (1) to preserve data integrity.
Cannot update trigger used by a CHECK constraint.

No entiendo nada.