我对带有句点的 Oracle 表的主键有疑问。
我创建了两个表,如下所示:
create table el_temporal_try( -- Parent Table
id number(10) not null,
ColumnA varchar(10),
constraint el_temporal_try_pk primary key (id),
period for valid_period
);
create table el_temporal_try_son( -- Son Table
id number(10) not null,
ColumnA varchar(10),
parent_id number(10),
constraint el_temporal_try_FY foreign key (parent_id) references el_temporal_try(id),
period for valid_period
);
该脚本成功通过。但是我在插入数据时遇到问题:
我在父表中执行了以下两个插入语句:
第一个:声明
insert into el_temporal_try
(id, columnA,valid_period_start, valid_period_end)
values
(1,'A',sysdate - 10, sysdate - 9);
结果:
插入 1 行。
第二:声明
insert into el_temporal_try
(id, columnA,valid_period_start, valid_period_end)
values
(1,'B',sysdate - 8, sysdate - 7);
结果
ORA-00001: 违反了唯一约束 (PBSVW.EL_TEMPORAL_TRY_PK)
我知道这是因为“ID”列。但是,我的问题是因为这两行是不同时期的,应该允许吗?
我打算将这段时间用于捕获记录的更改历史记录的功能,以替代闪回。但是,这是否意味着在这种情况下我不应该使用主键?
提前致谢!