When using Oracle, you have to execute the following SQL query:
1 2 3 |
|
The v$transaction
view provides information about the currently running database transactions. However, there can be multiple transactions running in our system, and that’s why we are joining the v$transaction
with the v$session
view.
The v$session
view offers information about our current session or database connection. By matching the session address between the v$transaction
and v$session
views, we can find the current running transaction identifier given by the xid
column in the v$transaction
view.
Because the xid
column is of type RAW
, we are using RAWTOHEX
to convert the transaction identifier binary value to its hexadecimal representation.
Oracle assigns a transaction identifier only if it needs to assign an undo segment, which implies that an INSERT, UPDATE or DELETE DML statement has been executed.
So, read-only transactions will not have a transaction identifier assigned. For more details about the undo log, check out this article.
When using SQL Server, you just have to execute the following SQL query:
1 |
|
Because the CURRENT_TRANSACTION_ID
function returns a BIGINT
column value, we are using CONVERT
to get its String representation.
When using PostgreSQL Server, you can execute the following SQL query to get the current transaction id:
1 |
|
Because the txid_current
function returns a BIGINT
column value, we are using CAST
to get its String representation.
When using MySQL or MariaDB, you can execute the following SQL query to get the current transaction id:
1 2 3 |
|
The innodb_trx
view in the information_schema
catalog provides information about the currently running database transactions. Since there can be multiple transactions running in our system, we need to filter the transaction rows by matching the session or database connection identifier with the currently running session.
Just like it was the case with Oracle, since MySQL 5.6, only read-write transactions will get a transaction identifier.
Because assigning a transaction id has a given overhead, read-only transactions skip this process. For more details, check out this article.
This read-only transaction optimization works the same way in MariaDB, meaning that a transaction id is only assigned for read-write transactions only.
When using the HyperSQL database, you can execute the following SQL query to get the current transaction id:
1 |
|
That’s it!