将 AnyDAC 应用程序迁移到 FireDAC 在 AutoInc 字段上失败
Migrating an AnyDAC app to FireDAC fails on the AutoInc fields
我已将 AnyDAC 应用程序迁移到 FireDAC,但我无法使用其 Autoinc 字段。
ID
字段(主键)已在 Postgre SQL 上定义为默认为 nextval('llistapanelspuzzle_id_seq'::regclass)
,BIGSERIAL,因此服务器会自动设置其值。
该列被 AnyDAC 识别为 TAutoincField
并且工作正常,但是当我现在在 FireDAC 上打开那个 table 时,它没有说找到的字段是 TLargeIntField
。我将持久字段更改为 TLargeIntField,但现在在 Delphi 上插入记录时,我没有从服务器获取新值,它使数据集的值为 0,当我添加第二条记录时引发 Key Violation
(主键上值为 0 的两条记录)。
当它们被识别为 LargeInt 字段时,您知道如何在 FireDAC - PostgreSQL 上定义 AutoInc 字段吗?
更新:我已将 ID 添加到 UpdateOptions.AutoIncFields
,但它似乎没有任何改变。
谢谢。
看来您必须在 FDConnection 上激活 ExtendedMetada flag,以便 FireDAC 自动识别 PostgreSQL Autoinc 列。
现在可以正常工作了。
我已将 AnyDAC 应用程序迁移到 FireDAC,但我无法使用其 Autoinc 字段。
ID
字段(主键)已在 Postgre SQL 上定义为默认为 nextval('llistapanelspuzzle_id_seq'::regclass)
,BIGSERIAL,因此服务器会自动设置其值。
该列被 AnyDAC 识别为 TAutoincField
并且工作正常,但是当我现在在 FireDAC 上打开那个 table 时,它没有说找到的字段是 TLargeIntField
。我将持久字段更改为 TLargeIntField,但现在在 Delphi 上插入记录时,我没有从服务器获取新值,它使数据集的值为 0,当我添加第二条记录时引发 Key Violation
(主键上值为 0 的两条记录)。
当它们被识别为 LargeInt 字段时,您知道如何在 FireDAC - PostgreSQL 上定义 AutoInc 字段吗?
更新:我已将 ID 添加到 UpdateOptions.AutoIncFields
,但它似乎没有任何改变。
谢谢。
看来您必须在 FDConnection 上激活 ExtendedMetada flag,以便 FireDAC 自动识别 PostgreSQL Autoinc 列。
现在可以正常工作了。