Truncar (SQL)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 25 de junio de 2014; las comprobaciones requieren 14 ediciones .

TRUNCATE  - en lenguaje SQL - una operación para eliminar instantáneamente todas las filas de una tabla. Lógicamente similar a la operación DELETE sin la cláusula WHERE , pero difiere en situaciones prácticas [1] [2] [3] [4] [5] .

Sintaxis

Sintaxis general del comando:

TRUNCATE TABLE < Nombre de tabla >

La consecuencia de ejecutar dicho comando es la eliminación completa de todas las filas de la tabla <TableName> .

Diferencias con la instrucción DELETE

Las principales diferencias entre las declaraciones TRUNCATE y DELETE que pueden estar presentes en diferentes implementaciones de DBMS son:

  • La operación TRUNCATE no escribe en el registro de eventos la eliminación de filas individuales. Como resultado, no puede activar disparadores .
  • La operación TRUNCATE va seguida de una operación COMMIT implícita para algunos DBMS (como Oracle ) . Por lo tanto, los registros eliminados en la tabla no se pueden restaurar con la operación ROLLBACK . Pero también hay DBMS donde la operación TRUNCATE puede participar en transacciones, como PostgreSQL y Microsoft SQL Server .
  • La operación DELETE bloquea cada fila, mientras que la operación TRUNCATE bloquea toda la tabla.
  • La operación TRUNCATE no devuelve ningún valor significativo (normalmente devuelve 0), a diferencia de DELETE , que devuelve el número de filas eliminadas.
  • La operación TRUNCATE en algunos DBMS (por ejemplo, MySQL o Microsoft SQL Server ) reinicia los contadores (para campos con AUTOINCREMENTO / IDENTIDAD). En PostgreSQL , restablecer los contadores requiere el modificador RESTART IDENTITY.
  • La operación TRUNCATE en algunos DBMS (como MySQL , PostgreSQL o Microsoft SQL Server ) no está permitida en tablas que contienen claves externas de otras tablas. Sin embargo, PostgreSQL tiene un modificador CASCADE que permite TRUNCATE en esta situación: los datos de las tablas dependientes se eliminan en la misma transacción.
  • SQLite no tiene una operación como tal, pero hay una optimización de la operación DELETE que "acelera significativamente su operación si no hay un argumento WHERE".

La implementación de la declaración TRUNCATE puede depender de la elección de un DBMS en particular. Por lo tanto, en cada caso, es necesario estudiar la documentación del sistema seleccionado.

Notas

  1. Libros en línea de SQL Server. sentencia TRUNCATE TABLE. . Microsoft. Consultado el 12 de octubre de 2014. Archivado desde el original el 25 de abril de 2012.
  2. Documentación de MySQL. TRUNCATE TABLE Sintaxis. . Consultado el 14 de mayo de 2010. Archivado desde el original el 25 de abril de 2012.
  3. Referencia SQL de la base de datos Oracle®. 10g Lanzamiento 2 (10.2). . Corporación Oracle. Consultado el 14 de mayo de 2010. Archivado desde el original el 25 de abril de 2012.
  4. Postgres Pro Standard: Documentación: 9.5: TRUNCATE . postgrespro.ru. Consultado el 7 de junio de 2020. Archivado desde el original el 7 de junio de 2020.
  5. ELIMINAR . www.sqlite.org. Consultado el 7 de junio de 2020. Archivado desde el original el 17 de junio de 2020.