en academicos, software libre

Firebird, errores de SQL y soluciones

La otra vez estábamos estudiando para dejar regular la materia Base de Datos, y ayudé a una compañera con errores _SQL_ que le iban surgiendo. Como implico de mi parte investigación y búsqueda de material, lo quería compartir.

La practica implica ejecución de sentencias “DDL”:http://es.wikipedia.org/wiki/Lenguaje_de_definici%C3%B3n_de_datos sobre el programa _ISQL_, que es el interprete de _Firebird_.

El error fue: Statement failed, SQLCODE = -607

El código _SQL_ que daba el anterior error era:

bc. CREATE TABLE T_PRODUCTOS_COMPRADOS (
IDPRO DOM_IDPK,
FECHA DOM_FECHA ,
IDT DOM_IDPK ,
IDS DOM_IDPK ,
IDP DOM_IDPK ,
CANTIDAD DOM_CANTIDAD,
PRECIO DOM_PRECIO,
CONSTRAINT PK_T_PRODUCTOS_COMPRADOS PRIMARY KEY (IDPRO, FECHA,IDT,IDS,IDP),
CONSTRAINT FK_T_PRODUCTOS_COMPRADOS FOREIGN KEY (IDPRO, FECHA) REFERENCES T_COMPRA,
CONSTRAINT FK_T_PRODUCTOS_COMPRADOS FOREIGN KEY (IDT,IDS,IDP) REFERENCES T_PRODUCTO
);

Y el error completo era:

bc. Statement failed, SQLCODE = -607
unsuccessful metadata update
-STORE RDB$INDICES failed
-attempt to store duplicate value (visible to active transactions) in unique index “RDB$INDEX_5”

Diagnostico: El ante-ultimo y el ultimo “FOREIGN KEY”:http://es.wikipedia.org/wiki/Clave_foranea CONSTRAINT poseen el mismo nombre. Se debe cambiar el nombre de alguno de los dos.

Conclusión: Es importante que los nombres de los objetos de una DB sean descriptivos y cuidadosamente puestos.

Loading Facebook Comments ...

¿Algo para decir?

Comentario

Loading Disqus Comments ...