Necesito eliminar todas las filas de una tabla pero cuando agrego una nueva fila, quiero que la ID de clave principal, que tiene un incremento automático, vuelva a empezar desde 0 respectivamente 1.MySQL Eliminar todas las filas de la tabla y restablecer ID a cero
deRespuesta
no borre, el uso truncado:
Truncate table XXX
manejador de la tabla no recuerda el último valor AUTO_INCREMENT usado, pero empieza a contar desde el principio. Esto es cierto incluso para MyISAM e InnoDB, que normalmente no reutilizan valores de secuencia.
Si no puede utilizar TRUNCATE
(por ejemplo, debido a las restricciones de clave externa) se puede utilizar una modificación de tabla después de eliminar todas las filas para reiniciar el AUTO_INCREMENT:
ALTER TABLE mytable AUTO_INCREMENT = 1
Esto no funcionó para mí. ¿Cuál podría ser la razón? –
@NBhargav Debido a que es posible que esté utilizando el motor InnoDB en su mesa en lugar de MyISAM, el primero no es compatible con restablecer el índice. –
cómo eliminar todas las filas antes de alterar el valor auto_increment –
Un hecho interesante.
Estaba seguro TRUNCATE
siempre se obtienen mejores resultados, pero en mi caso, para una base de datos con aproximadamente 30 tablas con claves externas, pobladas con sólo unas pocas filas, que tomó cerca de 12 segundos para TRUNCATE
todas las tablas, en comparación con solamente unos pocos cientos de milisegundos a DELETE
las filas. Configurar el incremento automático agrega alrededor de un segundo en total, pero todavía es mucho mejor.
Así que sugeriría probar ambos, ver cuál funciona más rápido para su caso.
Si la tabla tiene las claves externas a continuación, siempre uso siguiente código:
SET FOREIGN_KEY_CHECKS = 0; -- disable a foreign keys check
SET AUTOCOMMIT = 0; -- disable autocommit
START TRANSACTION; -- begin transaction
/*
DELETE FROM table_name;
ALTER TABLE table_name AUTO_INCREMENT = 1;
-- or
TRUNCATE table_name;
-- or
DROP TABLE table_name;
CREATE TABLE table_name (...);
*/
SET FOREIGN_KEY_CHECKS = 1; -- enable a foreign keys check
COMMIT; -- make a commit
SET AUTOCOMMIT = 1 ;
Pero la diferencia estará en tiempo de ejecución. Mire por encima de la respuesta de Sorin.
Esta es una buena forma de tener datos huérfanos en cualquier tabla que eliminen las claves externas de la tabla. Habilitar las comprobaciones de claves foráneas después del hecho no hace que MySQL revalide esas claves foráneas, hasta donde yo sé. Esto le deja con filas que contienen datos que * no existe * en la tabla de referencia. Es muy posible que ni siquiera * tengas * llaves extranjeras en tu mesa. – cimmanon
- 1. MySQL: Eliminar todas las filas anteriores a 10 minutos
- 2. Borrar/restablecer un modelo en qt (eliminar todas las filas)
- 3. Borrar todas las filas en la tabla
- 4. ORMLite restablecer todas las tablas
- 5. MYSQL: eliminar todas las filas que contienen la cadena "foo" en la tabla "barra"
- 6. Eliminar todas las filas de una tabla, arroja nullpointer
- 7. cómo restablecer todas las estadísticas de mysql?
- 8. ¿Cómo eliminar todas las filas de una tabla excepto las dos primeras y la última?
- 9. Una forma rápida de eliminar todas las filas de una tabla de datos a la vez
- 10. Datos de la tabla vacía y restablecer las columnas de IDENTIDAD
- 11. Eliminar todas las filas en una tabla basada en otra tabla
- 12. mysql cuenta la suma de todas las filas
- 13. Java: Eliminar todas las filas de DefaultTableModel
- 14. Eliminar datos de todas las tablas en MYSQL
- 15. MySQL Eliminar cero pendiente
- 16. Eliminar todas las filas de la tabla de la base de datos SQLite
- 17. actualización de MySQL todas las filas de selección basado en la de otra tabla
- 18. [MySQL]: ELIMINAR filas de dos tablas dependientes
- 19. ¿Cómo puedo insertar muchas filas en una tabla MySQL y devolver las nuevas ID?
- 20. Mysql recuperar todas las filas con límite de
- 21. Cómo eliminar de manera eficiente todas las filas de una tabla en DB2
- 22. ¿Cómo leer todas las filas de la tabla grande?
- 23. Cómo eliminar filas duplicadas y actualizar la tabla
- 24. Cómo restablecer BigDecimal a cero
- 25. mySQL devuelve todas las filas cuando campo = 0
- 26. Eliminar filas duplicadas (no eliminar todas las duplicadas)
- 27. Manera eficiente de actualizar todas las filas en una tabla
- 28. MySQL: Cómo seleccionar todas las filas de una tabla EXCEPTO la última
- 29. Obtener todas las filas seleccionadas de mysql en una matriz
- 30. combinación izquierda no devolver todas las filas
Truncar funciona bien con tablas no restringidas, pero si su tabla tiene una restricción de clave externa, puede considerar usar el método Eliminar. Consulte esta publicación si tiene restricciones de FK: [tabla restringida de clave externa truncada] (http://stackoverflow.com/questions/5452760/truncate-foreign-key-constrained-table) –
recuerde que la tabla truncada no se va a retrotraer –