【发布时间】:2021-03-10 16:06:57
【问题描述】:
我已将 AnyDAC 应用程序迁移到 FireDAC,但无法使用其 Autoinc 字段。
ID 字段(主键)已在 Postgre SQL 上定义为默认为 nextval('llistapanelspuzzle_id_seq'::regclass),BIGSERIAL,因此服务器会自动设置其值。
AnyDAC 将该列识别为 TAutoincField 并且工作正常,但是当我现在在 FireDAC 上打开该表时,它无法说找到的字段是 TLargeIntField。我将持久性字段更改为 TLargeIntField,但是现在在 Delphi 上插入记录时,我没有从服务器获取新值,它使数据集的值为 0,当我添加第二条记录时,它会引发 @987654326 @(主键值为 0 的两条记录)。
当 AutoInc 字段被识别为 LargeInt 字段时,您知道如何在 FireDAC - PostgreSQL 上定义 AutoInc 字段吗?
更新:我已将 ID 添加到 UpdateOptions.AutoIncFields,但它似乎没有任何改变。
谢谢。
【问题讨论】:
-
嗨,马克。我自己不是 PostGreSQL 用户,但您查看过 this page 吗?
-
如何插入记录?我猜你没有使用明确的
INSERTSQL 查询? -
嗨@MartynA。是的,谢谢,当我更新帖子说我尝试将该列添加到
UpdateOptions.AutoIncFields时,这就是我正在阅读的内容。我想我错过了一步,所以我会继续尝试Manual Specifiying部分。 -
嗨@Olivier 不,我有一个带有 SELECT * FROM MyTABLE 的 TFDQuery,我在其中执行了几个 MyQuery.Apend 和 MyQuery.Post。
-
尝试使用 查询字段编辑器 重新创建持久字段,至少是 autoinc 字段
标签: postgresql delphi firedac delphi-10.4-sydney