Последовательность в создании таблицы? - PullRequest
0 голосов
/ 31 октября 2019

Итак, я не сдал экзамен с показателем 60%, который требовал 3% для прохождения, и я хочу знать о последовательности в операторе создания таблицы, учитывая тот факт, что => в последовательности «существовать» в базе данных, например, 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 не может дать ошибку). В этом типе вопросов я запутался.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Следующий оператор

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" с полной строгостью.

0 голосов
/ 31 октября 2019

Относительно вопроса о версиях Oracle для сдачи экзамена 1z0-071, я бы сказал, что, хотя существуют различия между 11g до 19c, большинство вопросов должны основываться на концепциях, которые являются стандартными для этих версий.

Более конкретно, для части вопроса о последовательности, хотя можно создать таблицу со значением по умолчанию, указывающим на currval, это было бы редко полезно. Используя приведенный выше пример идентификатора, представьте, как использовать эту последовательность для создания идентификаторов пользователей. Мы ожидаем, что разные пользователи будут иметь разные идентификаторы, и при использовании currval существует большая вероятность того, что разные пользователи будут иметь одинаковые идентификаторы, что делает столбец практически бесполезным.

Хотя это не указано в вашем вопросе, я бы предположил, что большинство примеров использования последовательности по умолчанию было бы для суррогатного первичного ключа, который должен быть уникальным. Nextval будет гарантировать, что они будут уникальными, при условии, что строки не будут введены со значениями, превышающими существующий курсор последовательности внешнего пользователя.

...