当前位置: 首页 > 知识库问答 >
问题:

在Oracle SQL中为具有期间(时间有效性)的表创建主键

东门城
2023-03-14

我创建了两个表,如下所示:

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语句:

insert into el_temporal_try 
(id, columnA,valid_period_start, valid_period_end)
values
(1,'A',sysdate - 10, sysdate - 9);
insert into el_temporal_try 
(id, columnA,valid_period_start, valid_period_end)
values
(1,'B',sysdate - 8, sysdate - 7);

我打算使用这个period for特性来捕获记录的更改历史,作为闪回的替代方法。但是,这是否意味着在这种情况下我不应该使用主键?

提前道谢!

共有1个答案

龙学
2023-03-14

问题与您所说的id列有关。不可能添加注册表,因为主键是唯一的,那么第二个insert语句引用的ID与第一个相同。只要插入一行,就需要更改ID。

在Oracle12c上,您可以使用如下链接所示的标识。https://www.oracletutorial.com/oracle-basics/oracle-identity-column/

在另一个版本中,您可以使用序列和触发器来完成此操作。https://chartio.com/resources/tutorials/how-to-define-an-auto-increment-primary-key-in-Oracle/

 类似资料:
  • 你能给我一些关于表的主键操作在Oracle中具有时间有效性的一些看法吗? 我创建了一个具有以下架构的表 是因为Oracle实际上并不关心主键上的有效期列吗? 提前道谢!

  • 我想在Amazon Redshift中生成一个日期和时间表。下面的查询可以在Postgresql 9.1及以上版本中运行,但不幸的是,我们仅限于Amazon Redshift,这导致了错误:“函数generate_series不存在。”您在8.02中生成时间序列(如结果表)时的帮助将非常感谢。 编辑:我能够用下面的代码生成我想要的时间序列,但无法将它们创建到Redshift表中。错误消息为: “红

  • 本文向大家介绍js判断日期时间有效性的方法,包括了js判断日期时间有效性的方法的使用技巧和注意事项,需要的朋友参考一下 分享两种使用javascript验证日期以及时间是否有效的方法 第一种: 第二种: 以上这两种方法分享给大家,希望大家可以喜欢。

  • 我需要在所有具有相同属性值的节点之间创建关系。 例如,我可以使用以下查询: 但是如果我有大约200K的节点,这个脚本运行的时间相当长。 有没有其他更快的方法来建立这样的关系? 谢谢

  • 问题内容: 如何查询SQL Server的SQL Server 2005表列的创建日期? 我尝试获取该信息,但是创建日期未包含在此存储过程中。 如何才能做到这一点? 问题答案: 有一个名为sys.Columns的系统表,您可以从中获取列信息。如果要查看特定表的列,可以执行以下操作: 或者,您可以获取如下表信息: 但是我找不到有关列创建日期的任何信息。 更新: 这可能会有所帮助。

  • 我必须调用RESTendpoint(使用Java)来检索响应。这些配置包括 totalTimeAvailableToCheck=15秒,NoOfAttempts=3,intervalInAttempts=3秒。 因此,假设每隔3秒就会调用一个endpoint。如果我得到了所需的响应,那么完成执行,否则,每隔3秒继续尝试,接下来的3次尝试。主线程上所有这些的总等待时间不应超过15秒。因为resten