This is a suggestion for a new feature in isql.
Currently, it is not possible to change the attributes of the default transaction in isql. Whilst you can use SET TRANSACTION to start one transaction that is not the global default - READ WRITE WAIT SNAPSHOT - the following transaction reverts to the global configuration. This is confusing for anyone using isql to test the effects of concurrent transactions in various configurations and get to grips with multi-version transaction control. I think it is important to provide a way to support this learning process, that does not require a user to write a custom application.
SET TRANSACTION is standards-compliant and part of Firebird's SQL lexicon, unlike some of the SET commands in isql. It works as a DSQL command but isql has no way to retain the attributes and use them for further transactions in the isql session. How about a command KEEP TRANSACTION <access-mode> <lock-resolver> <isolation-level> [<rv-flag>]? It would work (for the user) just like SET TRANSACTION, but would start the next transaction with the same attributes. And maybe LOSE TRANSACTION with no parameters, to have isql revert to the current behaviour.
Along with this, I would like to see SHOW TRANSACTION, to list out the attributes of current_transaction, including the handle ID, if that were feasible.