);
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.