Лекция: Целостность данных.
Диаграммы и триггеры
Пример: В данном примере вместо удаления студента из таблицы «Студенты» выполняется код между BEGIN иEND. Он состоит из двух команд DELETE. Первая команда удаляет все записи из таблицы «Оценки», которые связаны с записями из таблицы «Студенты». То есть у которых Оценки. Код студента] равен коду удаляемого студента. Затем из таблицы «Студенты» удаляется сам студент. Триггеры — это аналог процедур… Читать ещё >
Лекция: Целостность данных. Диаграммы и триггеры (реферат, курсовая, диплом, контрольная)
Целостность данных При работе БД должна обеспечиваться целостность данных. Под целостностью данных понимают обеспечения целостности связей между записями в таблицах при удалении записей из первичных таблиц. То есть, при удалении записей из первичных таблиц автоматически должны удаляться связанные с ними записи из вторичных таблиц.
В случае несоблюдения целостности данных со временем в БД накопится большое количество записей во вторичных таблицах связанных с несуществующими записями в первичных таблицах, что приведёт к сбоям в работе БД и её засорению неиспользуемыми данными.
Для обеспечения целостности данных в SQL Server используют диаграммы и триггеры.
Диаграммы — это компоненты БД, которые блокируют удаление записей из первичных таблиц если существуют связанные с ними записи во вторичных таблицах. Следовательно, диаграммы предотвращают нарушение целостности данных. В SQL Server диаграммы создаются при помощи мастера диаграмм, его описание представлено в лабораторной работе.
Триггеры — это аналог процедур обработчиков событий в Visual Basic. То есть они выполняют команды SQL если происходят какие либо действия с таблицей (Например: добавление, изменение или удаление записей). При помощи триггеров можно организовать автоматическое удаление записей из вторичной таблицы при удалении связанной с ними записи из первичной таблицы.
Рассмотрим создание триггеров при помощи языка SQL.
Создание триггеров В SQL Server существуют два вида триггеров:
Триггеры выполняемые после события, произошедшего с таблицей (Полный аналог процедур событий в Visual Basic);
Триггеры выполняемые вместо события, происходящего с таблицей. В этом случае событие (добавление, изменение или удаление записей) не выполняется, а вместо него выполняются SQL команды заданные внутри триггера.
Первый вид триггеров применяется для обработки событий таблиц, а второй — для обеспечения целостности данных, то есть удаление записей из вторичной таблицы при удалении связанной с ними записи из первичной таблицы.
Замечание: Триггеры создаются для конкретной таблицы и выполняются автоматически если с таблицей, для которой они были созданы происходит событие (добавление, изменение или удаление записей).
Для создания триггера на вкладке нового запроса необходимо набрать команду CREATE TRIGGER, имеющую следующий синтаксис:
CREATE TRIGGER.
ON.
FOR.
[WITH ENCRYPTION].
AS.
Здесь:
Имя триггера — это имя создаваемого триггера.
Имя таблицы — имя таблицы, для которой создаётся триггер.
Если используется параметр AFTER, то триггер выполняется после события, а если параметр INSTEAD OF, то выполняется вместо события.
Параметры INSERT, UPDATE и DELETE определяют событие, при котором (или вместо которого) выполняется триггер.
Параметр WITH ENCRYPTION — предназначен для включения шифрования данных при выполнении триггера.
Команды SQL — это SQL команды, выполняемые при активизации триггера.
Рассмотрим примеры создания различных триггеров для таблицы «Студенты» .
Пример: Создаёт триггер «Добавление», выводящий на экран сообщение «Запись добавлена» при добавлении новой записи в таблицу «Студенты» .
CREATE TRIGGER Добавление.
ON Студенты.
FOR AFTER INSERT.
AS PRINT 'Запись добавлена'.
Пример: Создаёт триггер «Изменение», выводящий на экран с сообщение «Запись изменена» при изменении записи в таблице «Студенты» .
CREATE TRIGGER Изменение.
ON Студенты.
FOR AFTER UPDATE.
AS PRINT 'Запись изменена'.
Пример: Создаёт триггер «Удаление», выводящий на экран с сообщение «Запись удалена» при удалении записи из таблицы «Студенты» .
CREATE TRIGGER Удаление.
ON Студенты.
FOR AFTER DELETE.
AS PRINT 'Запись удалена'.
Пример: В данном примере вместо удаления студента из таблицы «Студенты» выполняется код между BEGIN иEND. Он состоит из двух команд DELETE. Первая команда удаляет все записи из таблицы «Оценки», которые связаны с записями из таблицы «Студенты». То есть у которых Оценки. Код студента] равен коду удаляемого студента. Затем из таблицы «Студенты» удаляется сам студент.
CREATE TRIGGER УдалениеСтудента.
ON Студенты.
INSTEAD OF DELETE.
AS.
BEGIN.
DELETE Оценки.
FROM deleted.
WHERE deleted. Код студента]=Оценки. Код студента].
DELETE Студенты.
FROM deleted.
WHERE deleted. Код студента]=Студенты. Код студента].
END.
Замечание: Здесь удаляемая запись обозначается служебным словом deleted.
Замечание: Для обеспечения целостности данных триггеры используют обычно вместе с диаграммами, но мы можем применять такие триггеры и без диаграмм, однако мы не можем применять диаграммы без триггеров.