transaction - sql rowcount oracle insert
¿Cómo puedo saber si he trabajado sin compromiso en una transacción de Oracle? (2)
¿Hay alguna manera de saber si tengo un trabajo no comprometido (es decir, un DML) en una transacción? Tal vez una vista de diccionario de datos que pueda consultar?
Un método para descubrir esto desde dentro y fuera de la sesión ejecutando la transacción abierta sería bienvenido.
Gracias
Si no tiene acceso a v $ session, puede usar
select dbms_transaction.local_transaction_id from dual;
Esto solo funciona desde dentro de la sesión pero no necesita privilegios v $. Si devuelve un valor no nulo, ha iniciado una transacción. Eso normalmente significa cambios no confirmados, pero hay excepciones. Si emitió un punto de rescate, cambió los datos y regresó al punto de rescate, la transacción todavía ''vive''. Además, el uso de enlaces de bases de datos inicia transacciones, incluso solo para selecciones (o solían hacerlo).
SELECT *
FROM v$session v
WHERE v.AUDSID = userenv(''sessionid'')
AND v.TADDR IS NOT NULL