tryit attribute sql database oracle session commit

sql - attribute - oráculo: ¿qué afirmaciones deben ser comprometidas?



title label html (4)

DML debe ser comprometido o revertido. DDL no puede.

Here

Puede activar la confirmación automática y eso solo es válido para DML. DDL nunca forman parte de las transacciones y, por lo tanto, no hay nada como una confirmación / reversión explícita.

truncate es DDL y, por lo tanto, se comete implícitamente.

Editar
Tengo que pedir perdón. Al igual que @DCookie y @APC declararon en los comentarios que existe algo así como confirmaciones implícitas para DDL. Vea aquí para una pregunta sobre eso en Ask Tom . Esto está en contraste con lo que he aprendido y todavía estoy un poco curioso.

¿Cuál es la lista de declaraciones que se deben comprometer antes de realizar más acciones en la mesa para evitar un bloqueo? No estoy hablando de transacciones completas con múltiples declaraciones e integridad de transacción; en cambio, me refiero a declaraciones individuales.

Sé que se debe confirmar la inserción, pero truncar tiene un compromiso automático. ¿Cuál es la lista completa de declaraciones que deben ser comprometidas?

Necesita ser confirmado (lista de inicio):

UPDATE INSERT DELETE


En términos mecánicos, COMMIT realiza una transacción. Es decir, una transacción es toda la actividad (una o más declaraciones DML) que se produce entre dos instrucciones COMMIT (o ROLLBACK).

En Oracle, una sentencia DDL es una transacción en sí misma simplemente porque se emite una COMMIT implícita antes de que la instrucción se ejecute y luego otra vez. TRUNCATE es un comando DDL por lo que no necesita una confirmación explícita porque llamarlo ejecuta una confirmación implícita.

Desde la perspectiva del diseño del sistema, una transacción es una unidad de trabajo comercial. Puede consistir en una única declaración de DML o varios de ellos. No importa: solo las transacciones completas requieren COMMIT. Literalmente no tiene sentido emitir un COMMIT a menos que o hasta que hayamos completado una unidad de trabajo comercial completa.

Este es un concepto clave. Los COMPROMISOS no solo lanzan bloqueos. En Oracle también liberan pestillos, como la Lista de transacciones interesadas. Esto tiene un impacto debido al modelo de coherencia de lectura de Oracle. Excepciones como ORA-01555: SNAPSHOT TOO OLD o ORA-01002: FETCH OUT OF SEQUENCE producen debido a compromisos inapropiados. En consecuencia, es crucial que nuestras transacciones se cuelguen de las cerraduras todo el tiempo que las necesiten.


Los comandos DML (lenguaje de manipulación de datos) deben ser confirmados / revertidos. Here hay una lista de esos comandos.

Los enunciados de lenguaje de manipulación de datos (DML) se utilizan para gestionar datos dentro de objetos de esquema. Algunos ejemplos:

INSERT - insert data into a table UPDATE - updates existing data within a table DELETE - deletes all records from a table, the space for the records remain MERGE - UPSERT operation (insert or update) CALL - call a PL/SQL or Java subprogram EXPLAIN PLAN - explain access path to data LOCK TABLE - control concurrency


Y un punto clave: aunque TRUNCATE TABLE parece un DELETE sin una cláusula WHERE, TRUNCATE no es DML, es DDL. DELETE requiere un COMMIT, pero TRUNCATE no.