Support for read-only transactions
Opened this issue · 2 comments
RFC
Add support for read only transactions. Currently you can start a transaction with beginTransaction
. The proposal would add a beginReadOnlyTransaction
method that starts a read-only transaction.
Q | A |
---|---|
Proposed Version | 2.21.0 |
BC Break? | No |
Goal
Provide a method to start a read-only transaction. The proposed name for the method is beginReadOnlyTransaction
.
Background
I experienced a use case where I needed a read-only transaction. While it is easy enough to do it with the existing library. We can make it easier with a ready-to-use method that is well tested.
Considerations
There is no required preparation for laminas-db
users. The change does not break anything.
Proposal(s)
Users will use the method beginReadOnlyTransaction
when wanting to start a read-only transaction. Everything else stays the same.
Appendix
First, add the method beginReadOnlyTransaction
to Laminas\Db\Adapter\Driver\ConnectionInterface
.
Then implement the method in each driver.
Finally, make sure the new code is covered with tests.
I welcome all questions and feedback on the proposal.
This hugely depends on the backend, so it can't be implemented in a generic way, AFAIK.
I see it supports MySQL, SQLite, Oracle, Sql Server, PostgreSQL and IBM Db2. My understanding is that as long as transactions are supported, then read-only transactions are supported for each database. So if you can do beginTransaction
you should be able to do something like beginReadOnlyTransaction
.
I cannot be sure yet without trying. I could give it a go and if it just does not work, then I leave it.