• Publicidad

Borrar cliente en BD

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Borrar cliente en BD

Notapor BigBear » 2016-01-21 19:34 @857

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.
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Borrar cliente en BD

Notapor explorer » 2016-01-22 02:54 @162

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Borrar cliente en BD

Notapor BigBear » 2016-01-22 11:53 @537

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?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Borrar cliente en BD

Notapor explorer » 2016-01-22 13:38 @609

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Borrar cliente en BD

Notapor BigBear » 2016-01-22 16:53 @745

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.
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Borrar cliente en BD

Notapor explorer » 2016-01-22 20:35 @899

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados