Программирование >>  Реализация баз данных 

1 ... 92 93 94 [ 95 ] 96 97 98 ... 162


Первый оператор ALTER TABLE удаляет ограничение d2 fl4 из таблицы Book-Orders. Второй оператор ALTER TABLE добавляет каскадную ссглочную целостность к ограничению iitleid2 tT<. Ограничение titleid2Jk делает таблицу Books родительской для таблицы BookOrders.

9. На панели Editor в окне Query введите и исполните ющин код: UPDATE Books

SET TitlelD = ДиЗПгЗБ WHERE TitlelD = AUSTiaSA

Выполняется обновление первичного ключа TitlelD в таблице Books; в результате действия каскадной ссылочной целостности также обновляются таблицы BookAuthors и

BookOrders.

10. На панели Editor в окне Query введите и исполните ющий код:

SELECT Books TitlelD = b.titlelD, BookAuthors TitlelD = ba.titlelD,

BookOrders TitlelD = bo.titlelD FROM books b INNER JOIN bookautdors ba ON 0.titleIO=ba.titlelD INNER JOIN bookorders bo ON b.tltleID=uo.titlelD WHERE b.titleld=-aList1235

На вкладке Grids панели Results показано, что TitlelD обновлен во всех трех

таблицах.

На панели Editor в окне Query введите и исполните код:

DELETE FROM Books where TitlelD = AUSTISSS

Из-за действия каскадной ссылочной целостности при операциях удаления оператор

DELETE удаляет записи из таблиц Books, BookOrders и BookAuthors. В этом можно убедиться, исполнив оператор SELECT из задания 10. 12. На панели Editor в окне Query введите и исполните следующий код:

ALTER TABLE BookAuthors DROP CONSTRAINT titleid fk ALTER TABLE BookOrders DROP CONSTRAINT titleid2 fk ALTER TABLE BookAuthors

ADD CONSTRAINT titleiQ fk FOREIGN KEY (TitlelD) REFERENCES Books (TitlelD) ALTER TABLE BookOrders

ADD CONSTRAINT titleid2 fk FOREIGN KEY (TitlelD) REFERENCES Books (TitlelD) INSERT Books (TitlelD, Title, Publisher, PubDate, Edition, Cost, SRP, ConditionID, Sold)

VALUES С AUST12.34-, Sense and Sensibility, -M/A, 1811, 1, 3000, 5900,

3,0)

Эти операторы возвращают базу данных в исходное состояние.



Резюме

целостность данных часто реализуют с помощью триггеров. Они вызываются при модификации табличных данных во время событий INSERT, UPDATE или DELETE. В зависимости от класса триггер можно привязать к таблице или представлению. Триггеры расширяют возможности целостности данных, реализуя в базе данных сложные Во всех случаях прежде чем использовать триггеры, следует таться обойтись ограничениями и правилами, поскольку триггеры гораздо больше снижают чем или правила. Однако в определенных ситуациях лучше всего использовать триггеры (например, когда необходимо вывести пользовательские сообщения об ошибках). Триггеры могут ссылаться на данные, расположенные в текущей базе и ее Один триггер способен выполнять несколько задач и срабатывать в результате нескольких событий. Нельзя создать триггер во временной или системной таблице, но триггеры могут ссылаться на эти таблицы. Некоторые события, например усечение таблицы, не вызывают срабатывание DELETE-триггера. Для

хранения модифицированных и удаленных данных триггеры используют псевдотаблицы

и на которые код триггеров. Существует два класса триггеров:

INSTEAD OF и AFTER. Первые выполняются в обход модификации таблицы или представления, вызвавшей его срабатывание. Триггер AFTER срабатывает сразу после обработки ограничений таблицы, Если происходит некорректное завершение событий INSERT, UPDATE или DELETE, триггер откатывает транзакцию.



Занятие 2 Создание repos ление ими 279

Зпиятие 2, Создание триггеров и управление ими

В этом занятии вы познакомитесь с рядом методов создания триггеров и управления ими. Как правило, для создания триггеров и управления ими используется Query Analyzer или Enterprise Manager. Для создания триггера служит оператор CREATE TRIGGER. В процессе создания триггер привязывается к таблице или представлению. Созданный триггер можно

модифицировать средствами оператора ALTER TRIGGER. Переименование и просмотр

триггеров осущесгвляется посредством системных хранимых процедур или Enterprise Manager. Для удаления триггера используется оператор DROP TRIGGER, а для включения и выключения триггеров - оператор ALTER TABLE.

Изучив материал этого занятия, вы сможете:

создавать триггеры;

переименовывать триггеры и модифицировать их содержимое; просматривать, удалять и отключать триггеры.

Продолжительность занятия - около 40 минут.

Создание триггеров с помощью языка Transact-SQL

Оператор CREATE TRIGGER позволяет создавать триггеры с помощью Query Analyzer

или утилиты командной строки, например При использовании оператора CREATE TRIGGER необходимо задать имя триггера, таблицу или представление, к которому будет привязан триггер, класс (INSTEAD OF или AFTER), событие или события, вызывающие срабатывание триггера, и задачу, которую он должен выполнять. Также можно (но не обязательно) задать необходимость репликации или шифрования триггера. Хотя конструкция WITH APPEND оставлена для преемственной совместимости, ее не следует использовать для создания триггеров в базах данных SQL Server 2000.

Вот основные конструкции оператора CREATE TRIGGER:

CREATE TRIGGER ими тригеера ON или

FOR и

AS операторы Transact-SQL

В этом разделе подробно обсуждаются конструкции CREATE TRIGGER, ON и FOR/ AFTER/INSTEAD OF и показаны примеры их использования. В занятии 3 описаны операторы Transact-SQL, расположенные после конструкции AS. За боле ртбнылш сведениями о конструкциях, которые здесь не показаны, обращайтесь к SQL Server Books Online.

Конструкция CREATE TRIGGER

Триггер создается CREATE за которой следует имя триггера.

Триггеры не допускают указания имени базы данных в виде префикса имени объекта. Поэтому перед созданием триггера необходимо выбрать нужную базу данных с помощью конструкции USE имя базы Оашп.,. и ключевого слова GO. Ключевое слово GO требуется, поскольку оператор CREATE TRIGGER должен быть первым в пакете.

Право на создание триггеров по умолчанию принадлежит владельцу таблицы. Лучше создавать таблицы, триггеры и другие объекты базы .lamiLi так, чтобы их владельцем был dbo. Например, следующий код Transact-SQL позволяет создать триггер Alerter в базе данных



1 ... 92 93 94 [ 95 ] 96 97 98 ... 162

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика