No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Borrando datos: DELETE

17/34
Recursos

Aportes 21

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Leyendo el manual de MySQL, encontré la siguiente expresión que nos ayudaría a probar sin miedo a cargarnos nuestros datos. La expresión se llama TRANSACTION y nos permite realizar nuestras acciones y sólo aplicarlas si llamamos COMMIT o devolvernos si llamamos ROLLBACK.

Ejemplo:

-- Iniciamos una transacción
START TRANSACTION;

-- Oops!
DELETE FROM `stations`;

-- Empezamos a sudar
SELECT * FROM `stations`;

-- No nos preocupemos, le hacemos ROLLBACK y volvemos al estado inicial antes de comenzar la transacción.
ROLLBACK;

-- 🎉
SELECT * FROM `stations`;

Si estamos seguros que nuestros cambios están correctos, en lugar de hacer ROLLBACK hacemos COMMIT.

PUEDES HACER PARA CREAR UNA TABLA IGUAL A stations APLICANDO ESTE COMANDO:

CREATE TABLE stations_delete SELECT * FROM stations;

Para eliminar una vez identificado todos los id también podríamos utilizar el siguiente query:

DELETE FROM `stations` WHERE id IN (164,165,166)

Un profe EXCELENTE. Super explicado, cero dudas, bueno, tal vez un par pero espero despejarme un poco mas en clases posteriores.

USE metro_cdmx;

DROP TABLE stations_delete

he trabajado con sql server en proyectos reales, y una buena practica para evitar el problema de borrar toda la bd, es sacar backup antes de hacer cualquier modificacion.

Para Workbench en las ultimas versiones existe el modo seguro que se puede activar o desactivar para evitar esos casos con DELETE:

delete from metro_mx.stations Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.000 sec

Una buena practica a tener en cuenta es realizar inicialmente el select de lo que deseamos borrar, esto filtrando los registros, hasta es bueno hacer un backup y luego modificamos la consulta adicionando la clausula Update

TRUNCATE TABLE para reiniciar los id’s

Les dejo este tema clásico sobre dl DELETE FROM <https://youtu.be/i_cVJgIz_Cs> 🤣
En el Core financiero de la empresa donde trabajo realizamos borrado lógico en las tablas transaccionales y Delete solo aplicamos a tablas temporales que requieren limpieza anualmente.
Genial e importante esta clase.... ![](https://static.platzi.com/media/user_upload/image-74567f3d-e818-4c3d-873b-4b4c668479bd.jpg)
Otra manera de hacer el ejercicio que realizó el profe: ``````txt DELETE FROM `stations` WHERE id BETWEEN 164 AND 166; `````DELETE FROM `stations` WHERE id BETWEEN 164 AND 166;`` ``````

estoy impresionado, muy buen profesor

delete from `lines` where id=12;

NUNCA VOY A ESCRIBIR UN DELETE SIN EL WHERE!

Hasta existe una canción en youtube: No te olvides el where en el delete from.

Una manera de saber los IDs de más de un record en SQL es usando IN

SELECT name, id FROM stations WHERE name IN("Merced", "Lázaro de Guerrero")

.
Tambien otro tip es que cuando estamos estamos haciendo un DELETE, hay que ponerle un LIMIT 1, ya que para ciertas condiciones, se pueden borrar más de uno.

DELETE FROM stations
WHERE id = 164
LIMIT 1;

Para los que intentaron hacer la prueba de ejecutar TRUNCATE en la tabla original y les salió el error debido a que la tabla tiene una referencia con otra tabla.

La solución para elimnar todo y reiniciar los id sería:

Hacer el DELETE FROM stations;
y luego realizar un ALTER TABLE stations AUTO_INCREMENT = 1

REFERENCIA: https://es.stackoverflow.com/questions/11331/como-reiniciar-el-auto-increment-de-mysql

ERROR

Cannot truncate a table referenced in a foreign key constraint (`metro_cdmx`.`locations`, CONSTRAINT `locations_station_id_foreing` FOREIGN KEY (`station_id`) REFERENCES `metro_cdmx`.`stations` (`id`))