Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Un Detalle Con Bases De Datos Al Tratar De Hacer Cambios En Cascada

Un Detalle Con Bases De Datos Al Tratar De Hacer Cambios En Cascada
Artículo
Responder citando    Descargar mensaje  
Mensaje Un Detalle Con Bases De Datos Al Tratar De Hacer Cambios En Cascada 
 
Hola buenas, como están hermanos programadores, espero que estén bien y deseándoles como de costumbre el mejor éxito en sus proyectos.

Quiero comentarles que estoy haciendo pruebas con la base de datos Sqlite relacionando las tablas y haciendo cambios en la misma pero me estoy encontrando con un detalle y es que noto que no me esta borrando los registros en cascada!.

Ejemplo poseo estas tres tablas:
1-Empresa
2-Almacen
3-Almacen_Empresa

Yo creo la tabla que relaciona dos tablas de muchos a muchos de la siguiente manera:

CREATE TABLE almacen_empresa (
    id_almacen_empresa  INTEGER PRIMARY KEY,
    fk_rif_empresa INTEGER,
    fk_almacen INTEGER,
    FOREIGN KEY (fk_rif_empresa) REFERENCES empresa(rif_empresa) ON UPDATE CASCADE ON DELETE CASCADE
    FOREIGN KEY (fk_almacen) REFERENCES almacen(id_almacen)ON UPDATE CASCADE ON DELETE CASCADE
);


Al llenar la tabla Almacen_Empresa con las foráneas que corresponden a las dos comentadas las consultas las hace muy bien con su relación y todo pero cuando borro un registro sea de la tabla Empresa o Almacen no borra tampoco el registro que se relaciona en la tabla Almacen_Empresa, que podrá ser?.

Sera que el ON DELETE CASCADE le falta algo? y lo mas extraño es que me sucede lo mismo en Mysql quizá sea ignorante en el asunto y no sepa algo allí.

Quiero salir de dudas, gracias.



 
jousseph - Ver perfil del usuario Enviar mensaje privado  
jousseph [ Miercoles, 01 Febrero 2017, 03:31 ]
 


Un Detalle Con Bases De Datos Al Tratar De Hacer Cambios En Cascada
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Un Detalle Con Bases De Datos Al Tratar De Hacer Cambios En Cascada 
 
En sqlite ¿Has establecido la integridad referencial? Para ello al abrir la conexión tienes que enviar ésta consulta a la base de datos:
miconexion.Exec("PRAGMA foreign_keys = 1")


En MySql:
¿Estás utilizando el motor de datos INNODB? Porque si utilizas MyISAM, no tienes integridad referencial.

Si la respuesta es sí, sube una base de datos sqlite con la estructura que no te funciona y te podré decir algo más.

Saludos.



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Miercoles, 01 Febrero 2017, 09:45 ]
Responder citando    Descargar mensaje  
Mensaje Re: Un Detalle Con Bases De Datos Al Tratar De Hacer Cambios En Cascada 
 
Citar:
En sqlite ¿Has establecido la integridad referencial? Para ello al abrir la conexión tienes que enviar ésta consulta a la base de datos:

miconexion.Exec("PRAGMA foreign_keys = 1")

Efectivamente señor Shordi, el problema era ese, yo pensaba que eso se configuraba solo, veo que hay que estar ejecutando en Sqlite el codigo:

PRAGMA foreign_keys = 1

Para que en las relaciones pueda borrar o hacer cambios en las tablas en forma de cascada, gracias!.

Encuanto a Mysql
Citar:
En MySql:
¿Estás utilizando el motor de datos INNODB? Porque si utilizas MyISAM, no tienes integridad referencial.

Pues yo siempre uso INNODB pero el problema era que yo dejaba la configuración en phpmyadmin asi:

 mysql_error_al_borrar_en_cascada

Cuando en realidad debe quedar asi:

 mysql_error_al_borrar_en_cascada_resuelto

Gracias señor Shordi.

Saludos y abrazos.



 
última edición por jousseph el Jueves, 02 Febrero 2017, 04:14; editado 1 vez 
jousseph - Ver perfil del usuario Enviar mensaje privado  
jousseph [ Jueves, 02 Febrero 2017, 04:07 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 



 

cron