You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently identity columns on Oracle are implemented with a trigger and sequence workaround to be compatible with IDENTITY generator strategy in ORM. However, using this strategy, the last insert ID is never returned when persisting, as the sequence name generated by DBAL is not passed to the ID-Generator instance in ORM and thus not passed to the driver when calling IdentityGenerator::generate(). Therefore the Oracle driver always returns null in this case. This makes this strategy unusable.
A similar case is given in PostgreSQL where SERIAL identity columns need a sequence in order to work. There is a hackish implementation available in ORM for this case which makes it work.
It is possible that other vendors (when implemented) encounter the same issue. For this reason I tried to create a general solution with this PR.
ORM needs to know which platforms do not have native support for identity columns but can emulate them with sequences. To prepare this I added an interface that identifies a platform being able to do so. Platforms implementing this interface have to return the name of the sequence used for an identity column in a table. ORM can later make use of this and pass it to the IdentityGenerator so that the underlying driver in return is able to supply the last insert ID.
Current implementing platforms are PostgreSQL and Oracle.
The text was updated successfully, but these errors were encountered:
Jira issue originally created by user @doctrinebot:
This issue is created automatically through a Github pull request on behalf of deeky666:
Url: #428
Message:
Currently identity columns on Oracle are implemented with a trigger and sequence workaround to be compatible with IDENTITY generator strategy in ORM. However, using this strategy, the last insert ID is never returned when persisting, as the sequence name generated by DBAL is not passed to the ID-Generator instance in ORM and thus not passed to the driver when calling
IdentityGenerator::generate()
. Therefore the Oracle driver always returns null in this case. This makes this strategy unusable.A similar case is given in PostgreSQL where
SERIAL
identity columns need a sequence in order to work. There is a hackish implementation available in ORM for this case which makes it work.It is possible that other vendors (when implemented) encounter the same issue. For this reason I tried to create a general solution with this PR.
ORM needs to know which platforms do not have native support for identity columns but can emulate them with sequences. To prepare this I added an interface that identifies a platform being able to do so. Platforms implementing this interface have to return the name of the sequence used for an identity column in a table. ORM can later make use of this and pass it to the
IdentityGenerator
so that the underlying driver in return is able to supply the last insert ID.Current implementing platforms are PostgreSQL and Oracle.
The text was updated successfully, but these errors were encountered: