我正在尝试在 Delphi FireDac 中建立一个关系数据库。我需要详细密钥字段来匹配主密钥。这将需要详细关键字段中的重复数据。
我尝试填充
AfterInsert
的 TFDTable
事件中的字段,但收到错误
“字段‘id’无法修改”
我也尝试将
AutoGenerateValue
的TFDTable
设置为arDefault
,但一直无法更新记录。我收到错误了
关系“line”的“id”列中的空值违反了非空约束
该字段定义为
not null
,但不是 unique
或 primary key
。
如何在多个明细键字段中生成与主主键相同的值?
如果您将其发布为答案,我会接受
使用明细表的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必须被读/写