- •Серверы баз данных Курс лекций
- •Предисловие
- •Серверы баз данных. Основные понятия
- •История развития субд
- •Перспективы развития субд
- •Трехуровневая архитектура бд. Ее назначение
- •Модели клиент- сервер в технологии бд
- •Пользователи бд
- •Разработчики и администраторы приложений.
- •Контрольные вопросы
- •Двухуровневые модели
- •Модель удаленного доступа к данным
- •Удаленная презентация (Модель сервера бд)
- •Модель распределенной бд
- •Модель сервера приложений
- •Проектирование баз данных
- •Этапы разработки базы данных
- •Критерии оценки качества логической модели данных
- •Алгоритм нормализации (приведение к 3нф)
- •Элементы модели "сущность-связь"
- •Основные понятия er-диаграмм
- •Пример разработки er-модели
- •Описание предметной области
- •Описание сущностей и типов связей
- •П ереход к реляционной модели
- •Концептуальные и физические er-модели
- •Контрольные вопросы
- •Языки бд. Язык определения данных
- •Создание бд. Способы создания бд
- •Создание таблиц базы данных
- •Декларативные ограничения при создании таблиц
- •Задание ограничений ссылочной целостности
- •Изменение таблиц
- •Создание индексов в системе sql-сервер
- •Кластеризованный индекс
- •Контрольные вопросы
- •Языки бд. Язык управления данными
- •Выборка данных
- •Сортировка результатов запроса
- •Вложение запросов
- •Создание таблицы из набора результатов
- •Использование оператора union
- •Запросы на модификацию данных
- •Запросы на удаление
- •Запросы на добавление
- •Вставка записей из другой таблицы
- •Добавление данных в указанные поля
- •Values(‘31.03.03’,’согласен’,3000,4)
- •Запросы на обновление
- •Контрольные вопросы
- •Создание представлений
- •Создание, удаление и обновление представлений
- •Модифицируемые и немодифицируемые представления
- •Контрольные вопросы
- •Хранимые процедуры
- •Элементы Transact sql
- •Оператор условия
- •Циклическое выполнение операций
- •Функции
- •Создание хранимых процедур
- •Выполнение хранимой процедуры.
- •Контрольные вопросы
- •Триггеры
- •Назначение триггеров
- •Создание триггеров
- •Принцип работы триггеров
- •Включение и отключение триггера. Удаление триггера, Просмотр информации о триггерах
- •Контрольные вопросы
- •Транзакции и блокировки
- •Понятие транзакции
- •Свойства транзакций. Способы завершения транзакций
- •Операторы Transact sql для работы с транзакциями
- •Журнал транзакций.
- •Блокировки.
- •Сериалиация транзакций
- •Переопределение блокировок на уровне запроса. Типы блокировок
- •Контрольные вопросы
- •Безопасность данных и привилегии
- •Принципы защиты баз данных от несанкционированного доступа
- •Защита данных в системе ms sql Server
- •Контрольные вопросы
- •Организация доступа к бд из прикладных программ
- •Понятие курсора
- •Интерфейс прикладного программирования
- •Архитектура odbc
- •Архитектура odbc
- •Контрольные вопросы
- •Файловые структуры, используемые для хранения информации в бд.
- •Файлы прямого и последовательного доступа
- •Индексные файлы
- •Файлы с плотным индексом
- •Файлы с неплотным индексом
- •Моделирование отношений 1:м на файловых структурах
- •Моделирование отношений 1:м с использованием однонаправленных указателей
- •Структура записи подчиненного файла.
- •Алгоритм удаление записи из цепочки подчиненного файла.
- •Инвертированные списки
- •К Рисунок 14 онтрольные вопросы
- •Содержание
- •Литература
Принцип работы триггеров
Принцип работы триггера INSERT
Оператор INSERT выполняется в таблице, где определен триггер.
Оператор INSERT регистрируется в журнале.
Срабатывет триггер и выполняются его операторы.
После срабатывания триггера новые записи добавляются как в таблицу триггера так и в таблицу вставок. Таблица вставок хранит все зарегистрированные изменения, выполненные оператором INSERT, и позволяет ссылаться на вставленные данные в вызвавшем триггер операторе INSERT.
Принцип работы триггера DELETE
Оператор DELETE выполняется в таблице, где определен триггер.
Оператор DELETE регистрируется в журнале.
Срабатывет триггер и выполняются его операторы.
После срабатывания триггера DELETE удаляемые записи помещаются в специальную таблицу удалений, в которой хранятся копии удаляемых записей.
Принцип работы триггера UPDATE
Оператор UPDATE выполняется в таблице, где определен триггер.
Оператор UPDATE регистрируется в журнале.
Срабатывет триггер и выполняются его операторы.
Выполнение оператора UPDATE условно разделяют на два этапа: выполнение опертора DELETE, когда регистрируется предыдущее состояние данных и выполнение операторта INSERT, когда регистрируется будущее срстояние данных. При выполнении оператора UPDATE в таблице с определенным триггером исходные записи перемещаются в таблицу удалений, а обновленные записи перемещаются в таблицу вставок.
Включение и отключение триггера. Удаление триггера, Просмотр информации о триггерах
В таблице можно включить или отключить один или несколько триггеров. После отключения триггера его определение не удаляется из таблицы, но при выполнении операторов INSERT, UPDATE и DELETE триггер не срабатывает. Для включения или отключения триггеров служит оператор
ALTER TABLE таблица {ENABLE|Disable}TRIGGER имя триггера
После того как триггер стал ненужным или даже мешает работе, его следует удалить. Выполнение этой операции осуществляется с помощью команды DROP TRIGGER, имеющей следующий синтаксис: DROP TRIGGER {имя триггера} [,...n] Так как имя триггера уникально в пределах базы данных, то указание имени таблицы не требуется. С помощью одной команды DROP TRIGGER можно удалить несколько триггеров, перечислив их имена через запятую.
Просмотреть информацию о триггерах можно с помощью системных хранимых процедур или из SQL Server Enterprise Manager. Процедура sp_helptext имя триггера выводит код триггера. Процедура sp_helptrigger имя таблицы выводит список триггеров, определенных на указанной таблице.
Контрольные вопросы
С какой целью создаются триггеры?
Как осуществляется запуск триггеров?
Могут ли триггеры возвращать наборы результатов?
Какие категории триггеров существуют?
Для чего служат таблицы INSERTED и DELETED? Как эти таблицы используются при выполнении операции обновления?
Какой оператор служит для создания триггеров?
Объясните работу триггеров, приведенных в примерах.
Следует ли создавать триггеры в тех случаях, когда проверка может быть выполнена с помощью ограничений или правил?
Какие операторы служат для удаления триггера, отключения триггера?
Можно ли удалить одновременно несколько триггеров?
