如何以编程方式填充 Delphi FireDac 中的重复详细信息关键字段

问题描述 投票:0回答:1

我正在尝试在 Delphi FireDac 中建立一个关系数据库。我需要详细密钥字段来匹配主密钥。这将需要详细关键字段中的重复数据。

我尝试填充

AfterInsert
TFDTable
事件中的字段,但收到错误

“字段‘id’无法修改”

我也尝试将

AutoGenerateValue
TFDTable
设置为
arDefault
,但一直无法更新记录。我收到错误了

关系“line”的“id”列中的空值违反了非空约束

该字段定义为

not null
,但不是
unique
primary key

如何在多个明细键字段中生成与主主键相同的值?

database postgresql delphi firemonkey master-detail
1个回答
0
投票

如果您将其发布为答案,我会接受

使用明细表的OnNewRecordEvent。 确保详细信息关键字段不是只读的,特别是如果您通过 EDI 上下文菜单声明字段。

假设您有一个“大师”表 Artists

CREATE TABLE artists (
ArtistId INTEGER        PRIMARY KEY AUTOINCREMENT
                        NOT NULL,
Name     NVARCHAR (120));

以及详细表专辑

CREATE TABLE albums (
AlbumId  INTEGER        PRIMARY KEY AUTOINCREMENT
                        NOT NULL,
Title    NVARCHAR (160) NOT NULL,
ArtistId INTEGER        NOT NULL,
FOREIGN KEY (
    ArtistId
)
REFERENCES artists (ArtistId) ON DELETE NO ACTION
                              ON UPDATE NO ACTION);

然后ArtistId必须被读/写

© www.soinside.com 2019 - 2024. All rights reserved.