0

所以我在考试中失败了,分数为 60%,需要 3% 才能通过,我想知道 create table 语句中的序列,问题是我们认为 => 在数据库“存在”序列中,例如 SEQ_001 并用于例如=>

SQL>create table ( id number default seq_001.nextval ); or
    create table ( id number default seq_001.currval );

在 1z0 071 的主题中写道 =>

This exam was validated against 11g Release 2 version 11.2.0.1.0 and up to 19c

而且我知道从 12c 创建表中的序列是可能的,但在以前的版本中是不可能的,所以我怎么知道哪个版本适用于这个问题以及如何检查存在的序列是否与 nextval 一起使用,存在并不意味着它被使用(我是关于创建后的 nextval ,如果没有 currval 可以给出错误)。在这种类型的问题中,我感到困惑。

4

2 回答 2

0

关于参加 1z0-071 考试的 Oracle 版本问题,我想说虽然 11g 和 19c 之间存在差异,但大多数问题应该基于这些版本之间的标准概念。

更具体地说,对于问题的序列部分,虽然可以创建一个默认值指向 currval 的表,但它很少有用。使用上面的 ID 示例,想象使用此序列创建用户 ID。我们希望不同的用户有不同的 ID,并且使用 currval 很有可能不同的用户有相同的 ID,从而使该列基本上无用。

尽管您的问题中未指定,但我认为大多数使用序列默认值的示例都是针对代理主键的,该主键必须是唯一的。Nextval 将确保这些是唯一的,假设外部用户输入的行的值不大于现有序列 currval。

于 2019-10-31T20:29:38.727 回答
0

以下声明

create table t23 ( id number default seq_001.nextval ); 

在 Oracle 18c 上成功(db<>fiddle 上的演示)

在 Oracle 11gR2上失败并出现以下错误:

ORA-00984: 此处不允许列

db<>fiddle 使用 XE 版本,但我认为这不是解释。因此,该考试似乎没有完全严格地“针对 11g Release 2 版本 11.2.0.1.0 进行验证”

于 2019-11-01T15:31:53.147 回答