Página 1 de 1

Borrar cliente en BD

NotaPublicado: 2016-01-21 19:34 @857
por BigBear
Hola. Tengo una BD donde tengo clientes y pagos en tablas diferentes.

El tema es que si quiero borrar un cliente no puedo porque está enlazado con su pago.

Se arregla borrando los datos de las dos tablas, pero quería preguntar cómo sería correcto borrar un cliente, en mi caso. ¿Alguien me recomienda algo?

P.D.: La BD está hecho en SQL Server y mudada a MySQL.

Re: Borrar cliente en BD

NotaPublicado: 2016-01-22 02:54 @162
por explorer
Lo correcto sería mantener o crear la integridad referencial entre las tablas, para que cuando borremos un cliente, de forma automática se borren todos los datos de sus pagos.

Mira esta documentación: Integridad referencial en MySQL, en la sección «Eliminación de registros con claves foráneas», por el uso del atributo ON DELETE CASCADE.

Re: Borrar cliente en BD

NotaPublicado: 2016-01-22 11:53 @537
por BigBear
No encuentro ejemplos de cómo borrar usando MySQL, solo veo ejemplos de editar las tablas. ¿Conoces un enlace donde se muestren ejemplos de cómo se hace?

Encontré esta solución más fácil:

SET FOREIGN_KEY_CHECKS=0; -- to disable them
SET FOREIGN_KEY_CHECKS=1; -- to re-enable them

Se borra el registro sin tener en cuenta las relaciones. ¿Qué te parece esa solución? ¿Puede traer problemas?

Re: Borrar cliente en BD

NotaPublicado: 2016-01-22 13:38 @609
por explorer
Doddy escribiste:No encuentro ejemplos de cómo borrar usando MySQL, solo veo ejemplos de editar las tablas. ¿Conoces un enlace donde se muestren ejemplos de cómo se hace?
Aquí :)

Doddy escribiste:Encontré esta solución más fácil:

SET FOREIGN_KEY_CHECKS=0; -- to disable them
SET FOREIGN_KEY_CHECKS=1; -- to re-enable them

Se borra el registro sin tener en cuenta las relaciones. ¿Qué te parece esa solución? ¿Puede traer problemas?

Esto es como decir: "Tengo que ir a la cocina, pero es de noche y no veo nada. Podría encender la luz del pasillo, pero es más fácil esperar a que amanezca".

Sí, funcionará, pero entonces no tendrás las ventajas de la integridad referencial ni las actualizaciones ni los borrados en cascada.

Re: Borrar cliente en BD

NotaPublicado: 2016-01-22 16:53 @745
por BigBear
Sí, ya había leído todos esos enlaces, explorer. En todos se actualiza la tabla para después eliminar. Ya veremos cómo lo hago.

Re: Borrar cliente en BD

NotaPublicado: 2016-01-22 20:35 @899
por explorer
A ver... por si no queda claro... la ALTERación de la TABLE solo hay que hacerlo una vez, para indicar que queremos añadir el atributo del DELETE en cascada.

A partir de ese momento, se pueden hacer todas las operaciones de borrado en cascada que quieras.

En la página 6 del PDF Integridad referencial en MySQL enlazado antes hay un ejemplo de todo esto.