Issue with Firedac/Firebird 3 IDENTITY ID


  I am doing my first application and the first issue is with the IDENTITY generator with FireDac/FB3

ERROR MESSAGE:
exception class    : EAutoGeneratedValuesNotSupported
exception message  : SQLGeneration: Auto generated values are not supported on Firebird SQL Generator.



  [Entity]
  [Table('GERADOR')]
  [Id('FID', TIdGenerator.IdentityOrSequence)]
  TGERADOR = class
  private
    [Column('ID', [TColumnProp.Required, TColumnProp.NoInsert, TColumnProp.NoUpdate])]
    FID: Integer;

    [Column('NOME', [TColumnProp.Required], 50)]
    FNome: string;

    [Column('APLICACAO', [TColumnProp.Required], 3)]
    FAPLICACAO: string;
  public
    property ID: Integer read FID write FID;
    property Nome: string read FNome write FNome;
    property APLICACAO: string read FAPLICACAO write FAPLICACAO;
  end;


TABLE:
===================================================
CREATE TABLE GERADOR (
    ID         INTEGER GENERATED BY DEFAULT AS IDENTITY,
    NOME       VARCHAR(50) NOT NULL,
    APLICACAO  CHAR(3) NOT NULL
);



MADEXCEPT LOG:
============================================================================
032465bc +018 AbsolutProducao.exe Aurelius.Sql.AnsiSQLGenerator           TAnsiSQLGenerator.GenerateGetLastInsertId
033ac29b +0ab AbsolutProducao.exe Aurelius.Id.IdentityOrSequence          TIdentityOrSequenceGenerator.RetrieveIdAfterInsert
0330a114 +454 AbsolutProducao.exe Aurelius.Commands.Inserter              TInserter.Insert
03310414 +060 AbsolutProducao.exe Aurelius.Engine.ObjectManager           TObjectManager.ExecuteInsertCommand
0330f0f1 +0f5 AbsolutProducao.exe Aurelius.Engine.ObjectManager           TObjectManager.PerformInsertForSave
0330d9a3 +0bf AbsolutProducao.exe Aurelius.Engine.ObjectManager           TObjectManager.InternalSave
0330fa8c +06c AbsolutProducao.exe Aurelius.Engine.ObjectManager           TObjectManager.Save
033d276e +01a AbsolutProducao.exe Aurelius.Bind.Dataset                   TCustomAureliusDataset.InternalObjectInsert
032a4141 +021 AbsolutProducao.exe Aurelius.Bind.BaseDataset               TBaseAureliusDataset.DoObjectInsert
032a563d +121 AbsolutProducao.exe Aurelius.Bind.BaseDataset               TBaseAureliusDataset.InternalPost
008e268d +029 AbsolutProducao.exe Data.DB                                 TDataSet.CheckOperation
008e2188 +048 AbsolutProducao.exe Data.DB                                 TDataSet.Post
008e3081 +041 AbsolutProducao.exe Data.DB                                 TDataSet.CheckBrowseMode
008e1cdd +011 AbsolutProducao.exe Data.DB                                 TDataSet.MoveBy
008d90c1 +011 AbsolutProducao.exe Data.DB                                 TDataLink.MoveBy
01fd10dc +138 AbsolutProducao.exe Vcl.DBGrids                    1139  +0 DoSelection
01fd11b2 +06a AbsolutProducao.exe Vcl.DBGrids                    1139  +0 NextRow
01fd16b9 +2a9 AbsolutProducao.exe Vcl.DBGrids                    1139  +0 TCustomDBGrid.KeyDown
0141880d +021 AbsolutProducao.exe Vcl.Grids                      1527  +0 SendToParent
01418a21 +089 AbsolutProducao.exe Vcl.Grids                      1527  +0 TInplaceEdit.KeyDown
014246c0 +04c AbsolutProducao.exe Vcl.Grids                      1527  +0 TInplaceEditList.KeyDown
005e2a5e +08a AbsolutProducao.exe Vcl.Controls                            TWinControl.DoKeyDown
005e2a8e +00a AbsolutProducao.exe Vcl.Controls                            TWinControl.WMKeyDown
005dc35a +2be AbsolutProducao.exe Vcl.Controls                            TControl.WndProc
005e0f3f +63b AbsolutProducao.exe Vcl.Controls                            TWinControl.WndProc
01418d52 +072 AbsolutProducao.exe Vcl.Grids                      1527  +0 TInplaceEdit.WndProc
014251ec +07c AbsolutProducao.exe Vcl.Grids                      1527  +0 TInplaceEditList.WndProc
005e050c +02c AbsolutProducao.exe Vcl.Controls                            TWinControl.MainWndProc
0055429c +014 AbsolutProducao.exe System.Classes                          StdWndProc
741e8c1b +00b user32.dll                                                  DispatchMessageW
006f9e0f +0f3 AbsolutProducao.exe Vcl.Forms                               TApplication.ProcessMessage
006f9e52 +00a AbsolutProducao.exe Vcl.Forms                               TApplication.HandleMessage
006fa185 +0c9 AbsolutProducao.exe Vcl.Forms                               TApplication.Run


I found on other post that I can use Generator istead of the IDENTITY, 

So I wanna know if this IDENTITY will work with Firedac/FB3 ?

**My Entities unit  was generated using TMS DATA Modeler.**

To use identity id's, you need to use dialect FIREBIRD3 instead of FIREBIRD. So you should create your connection this way:



MyConnection := TFireDACConnectionAdapter.Create(FDConnection1, 'FIREBIRD3', False);


Mode info: http://www.tmssoftware.biz/business/aurelius/doc/web/sql_dialects.html
Wagner R. Landgraf2018-05-18 19:41:16

It is working now FireDac/Firebird with identity, 


Thanks.