Последовательность в создании таблицы?
Итак, я провалил экзамен со счетом 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, существует не означает, что она используется (Я говорю о следующем после создания, если currval не может выдать ошибку). В вопросах такого типа я запутался.
2 ответа
Следующее заявление
create table t23 ( id number default seq_001.nextval );
успешно на Oracle 18c (демонстрация на скрипте db<>).
но не работает на Oracle 11gR2 с этой ошибкой:
ORA-00984: столбец здесь запрещен
db<>fiddle использует редакции XE, но я не думаю, что это объяснение. Таким образом, похоже, что экзамен не был "проверен на соответствие 11g Release 2 версии 11.2.0.1.0" с полной тщательностью.
Относительно вопроса о версиях Oracle для сдачи экзамена 1z0-071 я бы сказал, что, хотя между 11g и 19c есть различия, большинство вопросов должны основываться на концепциях, которые являются стандартными для этих версий.
В частности, для части вопроса "Последовательность", хотя можно создать таблицу со значением по умолчанию, указывающим на currval, это редко будет полезно. Используя приведенный выше пример идентификатора, представьте, что вы используете эту последовательность для создания идентификаторов пользователей. Мы ожидаем, что разные пользователи будут иметь разные идентификаторы, а с currval существует большая вероятность того, что разные пользователи будут иметь один и тот же идентификатор, что делает столбец практически бесполезным.
Хотя это не указано в вашем вопросе, я предполагаю, что большинство примеров использования последовательности по умолчанию будет для суррогатного первичного ключа, который должен быть уникальным. Nextval гарантирует, что они будут уникальными при условии, что строки не вводятся со значениями, превышающими текущее значение текущей последовательности, внешним пользователем.