2009-10-05 25 views
45

¿Se puede usar el comando SQL "truncar tabla" dentro de una transacción? Estoy creando una aplicación y mi mesa tiene muchísimos registros. Quiero eliminar todos los registros, pero si la aplicación falla, debía deshacer mi transacción. Eliminar cada registro lleva mucho tiempo. Me pregunto si utilizo la tabla truncada, aún puedo revertir la transacción y recuperar mis datos en caso de error. Me doy cuenta de que la tabla truncada no escribe cada eliminación en el registro de transacciones, pero me pregunto si escribe la desasignación de la página al registro para que la reversión funcione.Truncar tabla dentro de la transacción

+1

Debería haber aclarado que estoy usando el servidor MSSQL 2005. –

Respuesta

44

En SQL Server, puede deshacer un TRUNCATE de una transacción. Escribe la desasignación de página al registro, como mencionaste.

+0

Gracias señor, señor. –

15

En Oracle, TRUNCATE TABLE es una sentencia DDL que no se puede usar en una transacción (o, para ser más exactos, no se puede revertir). AFAIK, si hay una transacción en progreso cuando se ejecuta la declaración, la transacción se confirma y luego se ejecuta el TRUNCATE y no se puede deshacer.

En Informix, el comportamiento de TRUNCATE es ligeramente diferente; puede usar TRUNCATE en una transacción, pero las únicas declaraciones permisibles después de eso son COMMIT y ROLLBACK.

Otros DBMS probablemente tienen sus propias interpretaciones idiosincrásicas del comportamiento de TRUNCATE TABLE.

Cuestiones relacionadas