Doctrine DBAL
  1. Doctrine DBAL
  2. DBAL-680

[GH-428] [DBAL-563] Add interface for sequence emulated identity platforms


    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.5
    • Component/s: None
    • Security Level: All
    • Labels:


      This issue is created automatically through a Github pull request on behalf of deeky666:



      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.


        Doctrine Bot added a comment -

        A related Github Pull-Request [GH-428] was closed:

        Doctrine Bot added a comment - A related Github Pull-Request [GH-428] was closed:


          • Assignee:
            Benjamin Eberlei
            Doctrine Bot
          • Votes:
            0 Vote for this issue
            1 Start watching this issue


            • Created: