Tecnología

Inicio

¿Cómo diferenciar entre Truncar y borrar en Oracle

¿Cómo diferenciar entre Truncar y borrar en Oracle


Hay dos formas de eliminar registros en Oracle. Uno es utilizar la situación "matar a todos", donde el comando TRUNCATE se vacía por completo la tabla de base de datos, y el otro es el comando DELETE, que puede filtrar registros prospectivos y revertir la acción en casos tales como la eliminación accidental. La forma más segura para demostrar este proceso es crear una tabla de prueba y probar los comandos posibles a cabo en lugar de experimento en una base de datos existente.

Instrucciones

BORRAR

1 Crear una tabla de prueba y rellenarla con los datos para comprobar el resultado. Los datos insertados demuestra el uso de la eliminación y la declaración truncado, como sigue:

CREATE TABLE test (testdata VARCHAR2 (2));

Insertar en la prueba (TestData) VALUES ( 'AX');

INSERT INTO prueba (testdata) VALUES ( 'ay');

INSERT INTO prueba (TestData) VALUES ( 'Z');

INSERT INTO prueba (TestData) VALUES ( 'BX');

INSERT INTO prueba (TestData) VALUES ( 'POR');

Insertar en la prueba (TestData) VALUES ( 'BZ');

INSERT INTO prueba (TestData) VALUES ( 'CX');

INSERT INTO prueba (TestData) VALUES ( 'CY');

INSERT INTO prueba (testdata) VALUES ( 'CZ');

INSERT INTO prueba (TestData) VALUES ( 'DX');

Insertar en la prueba (TestData) VALUES ( 'DY');

Insertar en la prueba (TestData) VALUES ( 'DZ');

COMETER;

SELECT * FROM prueba;

2 Eliminar un número de filas utilizando el comando de eliminar, pero no comprometen el resultado. Esto le mostrará la forma de eliminación protege los datos contra el borrado accidental en circunstancias normales. El comando de eliminación se ejecuta desde la línea de comandos de la siguiente manera:

SQL> Eliminar de la prueba donde testdata LIKE 'a%';

Esto eliminará todas las filas con el prefijo "A" y dejar el resto restante.

Deshacer el resultado y mostrar los resultados de la tabla de este modo:

SQL> ROLLBACK;

Esto invertirá la instrucción de eliminación anterior y la tabla ahora se debe establecer de nuevo a su estado original. Esto es verificable por:

SQL> SELECT * FROM prueba;

3 Ejecute el comando DELETE de nuevo, a continuación, "COMMIT", y "ROLLBACK" antes de probar la salida como se ilustra:

SQL> Eliminar de la prueba donde testdata LIKE 'a%';

SQL> COMMIT;

SQL> ROLLBACK;

SQL> SELECT * FROM prueba;

Esto demuestra que el Oracle "BORRAR" declaración ha sido eficaz e ignorado la declaración de reversión, debido a una "COMMIT" acción que tiene lugar inmediatamente después. Esto indica que todas las filas que comienzan con "A" en el campo "testdata" desaparecen de la base de datos y no son recuperables con una declaración "ROLLBACK".

TRUNCAR

4 Ejecutar una instrucción truncado en la tabla de prueba de la siguiente manera:

SQL> prueba TRUNCATE TABLE;

5 Retroceso de la declaración anterior de la siguiente manera:

SQL> ROLLBACK;

6 Seleccione elementos de la tabla de prueba de la siguiente manera:

SQL> SELECT * FROM prueba;

Esta muestra ninguna página en la tabla. La declaración "ROLLBACK" no funciona en el comando TRUNCATE y todas las filas de la base de datos desaparecen.

Otra diferencia importante entre "BORRAR" es que "TRUNCATE" trabaja más rápido, pero no es capaz de filtrar los datos mediante una cláusula "WHERE" (a diferencia de eliminar).

Consejos y advertencias

  • Cuando una eliminación tiene lugar u otras modificaciones en los datos, otros usuarios en diferentes sesiones sólo serán capaces de ver los datos en su estado original a menos que un lugar "COMMIT" ha tomado o el programa se completa.
  • Si no hay certeza de que todas las filas de una tabla deben ser eliminados después TRUNCATE se debe utilizar, pero si algunas filas deben mantenerse intacta la mejor opción es utilizar un comando de eliminación y COMMIT cuando esté satisfecho con el resultado esperado.
  • Si "AUTOCOMMIT = ON" dentro de Oracle borrar eliminará filas inmediatamente, sin la disposición de los datos de rollback. AUTOCOMMIT tiene que ser "off" para el sistema de reversión para recuperar datos borrados accidentalmente.