FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
error en firebird 2.0
Hola, trabajo con Firdbird 2.0 y Delphi 5, estoy creando una bbdd, con una tabla y varias referenciales, venia todo bien hasta que me aparecio un error y no se porque es, las tablbas la tengo creadas, la maestra "clientes" y la detalle "departamentos", con este codigo lo hice para otras tablas pero en esta "departamentos" me aparece un error.
Hago lo siguiente: ALTER TABLE clientes ADD CONSTRAINT FK_DEPTO FOREIGN KEY (cl_DEPTO) REFERENCES DEPARTAMENTOS (CODIGO) ON UPDATE CASCADE ON DELETE NO ACTION; Este es el error: ISC ERROR MESSAGE: violation of FOREIGN KEY constraint "PK_DEPTO" on table "DEPARTAMENTOS" Foreign key reference target does not exist PK_DEPTO es la PRIMARY KEY de la tabla "departamentos" |
#2
|
|||
|
|||
Faltan datos
El error da porque falta algún registro en DEPARTAMENTOS (o en clientes está mal).
Los datos que están mal son:
__________________
Sotoca Web |
#3
|
|||
|
|||
Sabes que reinicie el Firebird y funciono perfectamente, no se cual es el problema pero me ha pasado en otras oportunidades.
No se si debo preguntar en este hilo pero al crear esta referencia en las tablas, cuando borro un registro en la tabla departamentos con una referencia en la tabla clientes, no me muestra ningun error y lo borraç, pero cuando cierroo y abro nuevamente la aplicacion, el registro aparece, o sea que en definitiva no lo borra de la bbdd, como hago para que me muestre un mensaje de que ese registro tiene referencias en algun cliente? Lo hago con una consulta sql antes de borrar o mediante cascade o no action hay alguna manera que la firebird me lo impida respondiendome con un error |
#4
|
|||
|
|||
Creo que deberías quitar el "ON DELETE NO ACTION", si lo pones, el valor de la tabla CLIENTES no se altera, y tendrán un valor no válido. Si no lo pones, no te dejará borrar de la tabla DEPARTAMENTOS, produciéndose un error.
__________________
Sotoca Web |
#5
|
||||
|
||||
ON DELETE NO ACTION es la opción por defecto, (al menos en FB 1.5), si no se especifica otra.
Ahora mismo FB debería lanzar una excepción del tipo "Violation of constraint xxxxx" ya que no permite inconsistencias en la base de datos, es decir, no permite borrar un departamento si tiene un cliente. El hecho de no mostrar ningún error, quizás sea por otra causa. Yo al menos, si obtengo los mensajes de error, especificando en los parámetros (Params) del objeto Transaction: Código:
isc_tpb_read_committed isc_tpb_rec_version isc_tpb_nowait 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 |
Error con Firebird | PacoPepe | Conexión con bases de datos | 2 | 12-04-2007 11:44:01 |
Error con Firebird | keys | Conexión con bases de datos | 0 | 16-03-2007 14:03:19 |
Firebird 1.5.3 Error:No puede ejecutarse Firebird Guardian xq ya hay una instancia | Delphius | Firebird e Interbase | 5 | 26-01-2007 10:19:20 |
Error feo en firebird | rastafarey | Firebird e Interbase | 5 | 02-12-2005 14:45:07 |
Error mio o bug de Firebird? | TJose | Firebird e Interbase | 3 | 18-04-2005 15:29:17 |
|