¿Cuál es el efecto de colocar la confirmación de esta manera en el programa?
La documentación de Oracle describe COMMIT
como:
Propósito
Usa el COMMIT
declaración para finalizar su transacción actual y hacer permanentes todos los cambios realizados en la transacción. Una transacción es una secuencia de sentencias SQL que Oracle Database trata como una sola unidad. Esta declaración también borra todos los puntos de guardado en la transacción y libera los bloqueos de la transacción.
Si tiene tres PROCEDURE
y cada uno contiene un COMMIT
entonces no puede ejecutar los tres, entonces, si ocurre una excepción en el último, ROLLBACK
todos ellos ya que los cambios de los dos primeros ya serán COMMIT
ted.
Como regla general, no usa COMMIT
en un PROCEDURE
o FUNCTION
pero debería dejar que la persona que llama COMMIT
la transacción para que puedan agrupar varias acciones juntas.
Hay, por supuesto, casos de uso en los que querrá violar esta regla, pero debe considerar cada caso por separado y tomarse el tiempo para comprender completamente su lógica comercial antes de romper esta regla para saber qué es COMMIT
en cada caso.
¿Debo realizar esta transacción como AUTONOMOUS_TRANSACTION
? ?
Un caso de uso es el registro:es posible que tenga un PROCEDURE
que llama a otro PROCEDURE
para registrar las acciones del usuario y, independientemente de si la acción inicial tiene éxito o falla, desea mantener un registro de la acción y asegurarse de que el registro sea COMMIT
ted. En este caso, el PROCEDURE
de registro debe ser una AUTONOMOUS_TRANSACTION
y contener un COMMIT
declaración y la declaración de llamada debe (probablemente) no tener ninguno.
Entonces, si el COMMIT
de un PROCEDURE
siempre se requiere y es independiente de si la persona que llama COMMIT
s otros datos luego haga el PROCEDURE
una AUTONOMOUS_TRANSACTION
. Si el PROCEDURE
Los correos electrónicos se pueden agrupar y luego ROLLBACK
como grupo, entonces no desea que sean AUTONOMOUS_TRANSACTION
s.