Выбрать главу

);

COMMIT;

SELECT *

FROM products

WHERE product_id = 15;

PRODUCT_ID PRODUCT_TYPE_ID NAME

DESRIPTION PRICE

15 1 Physics

Textbook on physics 39.95

В следующем примере выполняется процедура DBMS_FLASHBACK. ENABLE_

AT_SYSTEM_CHANGE_NUMBER(), позволяющая выполнить ретроспекцию к заданному

SCN. Процедура принимает номер SCN, а пример передает значение

переменной current_scn в процедуру:

□ EXECUTE DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:current_scn);

Любой выполняемый теперь запрос отобразит строки такими, какими

они были во время действия SCN, хранящегося в переменной current_scn,

перед выполнением оператора INSERT. Следующий запрос пытается получить

строку с product_id, равным 15, но он заканчивается аварийно, так как

новая строка была добавлена уже после SCN, хранящегося в current_scn:

П SELECT product_id

FROM products

WHERE product_id = 15;

no rows selected

Для отмены ретроспекции следует выполнить процедуру DBMS_FLASHBACK.

DISABLE():

□ EXECUTE DBMS_FLASHBACK.DISABLE();

Если теперь еще раз выполнить предыдущий запрос, вы увидите новую

строку, добавленную оператором INSERT.

Примечание Если вы выполняли все приведенные выше примеры, вы должны заново выполнить

сценарий store_schema.sql для полного повторного создания схемы store и всех входящих

в нее объектов. После этого результаты выполнения вами операторов SQL снова будут

совпадать с моими результатами по мере вашего продвижения по оставшейся части книги.

Изменение содержимого таблиц 285

Итоги

В этой главе мы узнали:

■ Как добавлять строки с помощью оператора INSERT.

■ Как модифицировать строки с помощью оператора UPDATE.

■ Как удалять строки с помощью оператора DELETE.

■ Как база данных поддерживает целостность на уровне ссылок за счет

принудительного применения ограничений.

■ Как использовать ключевое слово DEFAULT для определения значений

столбцов по умолчанию.

■ Как сливать строки с помощью оператора MERGE.

■ Что транзакцией базы данных называется группа операторов SQL,

выполняющая логическую единицу работы.

■ Что база данных Oracle способна одновременно обрабатывать несколько

параллельно выполняемых транзакций.

■ Как использовать ретроспективные запросы для просмотра строк в

том виде, какими они были до выполнения изменений.

В следующей главе вы узнаете о пользователях, привилегиях и ролях.

Глава 9

Пользователи,

привилегии и роли

Примечание Если вы хотите следовать примерам этой главы, вам придётся набирать все

SQL выражения вручную, поскольку они не содержатся в каких-либо сценариях.____________

Пользователи

В этом разделе показано, как создать пользователя, как изменить его пароль

и как удалить пользователя.

В этой главе используется термин «табличное пространство»

(tablespace). Табличные пространства используются базой данных для хранения

отдельных объектов, которыми могут быть таблицы, типы, код PL/

SQL и т.п. Обычно связанные друг с другом объекты группируются и сохраняются

в одном табличном пространстве. Например, вы можете создать

приложение для ввода заказов и сохранить все объекты для этого

приложения в одном табличном пространстве, и приложение для логистики

и сохранить все объекты для этого приложения в другом табличном

пространстве. За дополнительной информацией о табличных пространствах

обращайтесь к руководству Oracle Database Concepts (Понятия базы

данных Oracle) корпорации Oracle.

Создание пользователя

Для создания в базе данных пользователя используется оператор CREATE

USER. Упрощенный синтаксис этого оператора выглядит следующим образом:

□ CREATE USER имя_пользователя IDENTIFIED BY пароль

[DEFAULT TABLESPACE таб_простр_по_умолч]

[TEMPORARY TABLESPACE врем_таб_простр];

где

■ имя_пользователя определяет имя пользователя базы данных;

■ пароль определяет пароль пользователя базы данных;

■ таб_лростр_по_умолч определяет используемое по умолчанию табличное

пространство, в которое помещаются объекты. Если фраза про

табличное пространство, используемое по умолчанию, будет опущена,

в качестве такого пространства будет использоваться табличное

пространство SYSTEM, имеющееся в каждой базе данных;

■ врем_таб_простр определяет используемое по умолчанию пространство,

куда помещаются временные объекты. К числу таких объектов

Пользователи, привилегии и роли 289

относятся, например, временные таблицы (см. главу 10). Если эта

фраза будет опущена, для размещения временных объектов будет использовано

системное пространство SYSTEM.