Собственно выполняемые действия триггера задаются в виде блока на языке Transact-SQL.
Втеле триггера можно обращаться к данным из двух псевдотаблиц inserted и deleted, которые имеют такую же структуру, как и родительская таблица триггера, и содержат новые и старые значения модифицированных строк соответственно.
ВMSSQL триггеры поддерживают только одну область видимости - выполнение триггера происходит только один раз для каждого оператора модификации таблицы.
Контрольные вопросы
1.В чем разница между sys и
INFORMATION_SCHEMA?
2.Как обеспечить максимальную переносимость скриптов, использующих метаданные, на другие SQLориентированные СУБД?
Дополнительные вопросы
1.Исправить ошибки в подготовленных выборках.
2.Выбрать имена баз данных и файлы, соответствующие им на диске.
3.Выбрать названия ролей и имена пользователей, входящих в эти роли.
4.Вывести текст запроса, создающего какое-либо системное представление.
5.Составить различные другие выборки по заданию преподавателей.
19
Лабораторная работа № 8 Выборка метаданных
Цель работы
Ознакомление со способами хранения служебной информации в СУБД Microsoft SQL Server; освоение способов выборки метаданных.
Темы для предварительной проработки
• Состав и структура представлений словаря / системного каталога.
Подготовка к работе
•По приведенной справочной информации изучить Состав и структура представлений словаря Microsoft SQL
Server.
•Выполнить следующие запросы на выборку сведений о таблицах, представлениях, триггерах, созданных в процессе выполнения лабораторного практикума:
1. выбрать имена всех таблиц, созданных назначенным пользователем базы данных (например, пользователем s33 для базы d33)
2. выбрать имя таблицы, имя столбца таблицы, признак того, допускает ли данный столбец null-значения, название типа данных столбца таблицы, размер этого типа данных - для всех таблиц, созданных назначенным пользователем базы данных и всех их столбцов
3. выбрать название ограничения целостности (первичные и внешние ключи), имя таблицы, в которой оно находится, признак того, что это за ограничение ('PK' для первичного ключа и 'F' для
20
внешнего) - для всех ограничений целостности, созданных назначенным пользователем базы данных
4.выбрать название внешнего ключа, имя таблицы, содержащей внешний ключ, имя таблицы, содержащей его родительский ключ - для всех внешних ключей, созданных назначенным пользователем базы данных
5.выбрать название представления, SQL-запрос, создающий это представление - для всех представлений, созданных назначенным пользователем базы данных
6.выбрать название триггера, имя таблицы, для которой определен триггер - для всех триггеров, созданных
назначенным пользователем базы данных
• Составить SQL-скрипт для выполнения созданных запросов.
Выполнение работы
•Запустить Microsoft Query Analyzer, соединиться
слокальной базой данных.
•В среде Microsoft Query Analyzer выполнить подготовленные скрипты.
•Сохранить результаты выполнения.
•Закончить работу с Microsoft Query Analyzer.
Содержание отчета
•Протокол работы в среде Microsoft SQL Server.
•Краткие выводы о навыках, приобретенных в ходе выполнения работы.
21
Теоретические сведения
Системный каталог и словарь данных
Каждая СУБД сохраняет метаданные (данные о данных) - детальную информацию обо всех объектах системы. Примерами таких объектов могут служить таблицы, представления, ограничения целостности, триггеры, правила безопасности и т.д. В разных СУБД применяются даже разные названия для метаданных - системный каталог в DB2 или словарь данных (Oracle). Однако общим свойством всех современных реляционных СУБД является то, что каталог/словарь сам состоит из таблиц. В результате пользователь может обращаться к метаданным так же, как и к своим данным - используя оператор SQL SELECT. Изменения же в каталоге/словаре производятся автоматически при выполнении пользователем операторов SQL, изменяющих состояние объектов базы данных.
Точнее, пользователь «видит» не сами таблицы каталога/словаря, а созданные на их базе представления, которые он, конечно же, не может изменять.
Состав и структура каталога/словаря очень различна для различных СУБД.
В Oracle представления словаря данных в большинстве своем доступны любому пользователю с привилегией CREATE SESSION. Существуют три группы представлений системного
каталога: |
|
|
представления |
с |
префиксом DBA_ содержат |
информацию обо всех объектах базы данных (эти |
||
представления доступны только пользователям с |
||
привилегией SELECT_ANY_TABLE; |
||
представления |
с |
префиксом ALL_ содержат |
информацию обо всех объектах, доступных данному |
||
пользователю; |
|
|
представления |
с |
префиксом USER_ содержат |
информацию обо всех объектах, владельцем которых является данный пользователь.
22
В DB2 представления системного каталога определены в схеме SYSCAT и привилегия выборки из них предоставлена группе PUBLIC.
Несмотря на различия, мы попытались свести некоторые общие свойства представлений метаданных в табл. 4. В ней показаны далеко не все представления метаданных и далеко не все столбцы этих представлений. Для Oracle мы ограничились только представлениями группы ALL_. Для DB2 мы опускаем имя схемы - SYSCAT.
23