Ver Mensaje Individual
  #20 (permalink)  
Antiguo 11/01/2015, 19:24
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Campo NOT NULL con Default Value en NULL

En esencia, tu tabla contenía datos corruptos...

TRUNCATE es una sentencia algo mas directa y completa, ya que en las tablas InnodDB donde hay campos AI, no sólo se borra todo, sino que además se reinicia el AI.
DELETE marca el campo como borrado y su espacio como disponible, pero no elimina físicamente los registros, como sí lo hace TRUNCATE.
Ahora bien, no es posible usarlo siempre de un modo fácil como este. Cuando la tabla es padre de otra (FK->PK), no es posible usarlo porque se violaría la integridad referencial. En esos casos es preferible el DELETE porque el delete en las FK con clausula ON DELETE CASCADE generan el borrado en cascada, pero TRUNCATE no.
El tema es que TRUNCATE no borra realmente los registros. Lo que borra es la tabla.
Crea una tabla temporal con la misma estructura que la que se trunca, luego borra la que se desea truncar, y cambia el nombre de la nueva al de la descartada. Por todo eso es que los registros realmente se borran de un modo físico...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)