For every table you create, including system tables, Firebird/InterBase® maintains an extra column for the transaction number. When you insert or update a column as part of a transaction, the transaction number is written to this column, so that Firebird/InterBase® knows which transaction is controlling that row of the table. Even when you delete a row as part of the transaction, the number is written to the row until the transaction is committed or rolled back, in case there is a problem, or in case the transaction is a lengthy one.
The Firebird/InterBase® versioning engine uses this transaction number to ensure that each user receives a consistent view of the database at a moment in time. This is known as a repeatable read.