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

1 ... 98 99 100 [ 101 ] 102 103 104 ... 162


присваивается значение Во второй части программа обнаруживает таблицу Deleted и устанавливает для записи с исходным значение поля

► Проверка триггера

1. На панели Editor в окне Query введите и исполните следующий код: SE mV.INSERT orders ON

INSERT INTO orders

(oraerid, customerid, eployeeid, amount, orderdate. deliverydate, paymentid. statusid)

VALUES (20, 10, 1, 500, GETDATEO, GETDATEO + 5, 2, 1) SET IDENTITY INSERT jfde-S OFF

В Orders добавляется новый заказ.

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

INSERT INTO bookorders (ordfM ! titieid) values (20, carrgeys-)

В таблицу BookOrders добавляется заказ на книгу с параметрами merlD 20, TitlelD - carr9675.

3. На панели Editor в окне Query введите и исполните следующий код: SELECT rnn Books where titieid - -саггЭбТб

Эта команда проверяет, изменилось ли значение поля Sold для этой книги на 1.

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

UPDATE bookorders

set fltlelD = aust1?34 where titieid = саггЭбТб

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

SELECT * from Books WHERE titieid = сагг9675 OR titieid = aust1234

Эта команда проверяет, действительно ли состояние поля Sold в записи с исходным значением TitlelD равно 0, а в записи с новым TitlelD - 1.

6. На панели Editor в окне Query введите и исполните следующий код: DELETE bookorders WHERE titieid = aust1234-

Эта команда удаляет заказ на книгу из таблицы BookOrders, а триггер возвращает полю Sold значение 0.

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

SELECT from Books WHERE titieid = ausl1234:

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

DROP TRIGGER dbo.u.pclate ttook staLub

Эта команда удаляет триггер из BookOrders.



Резюме

В этом занятии вы научились программировать триггеры. При срабатывание гера на события INSERT, UPDATE или DELETE создаются две логические таблицы. Эти таблицы позволяют точно определить, какие модификации сделаны в таблице при срабатывании триггера. Обнаружение модификаций данных - важный этап программирования бизнес-логики в триггерах. В синтаксис операторов CREATE и ALTER TRIGGER входят две полезные конструкции, которые позволяют обнаружить с добавленными и об-

новленными данными: UPDATE (ш1я стол6ца)-а {COLUMNS UPDATED()). Конструкция UPDATE (и. л сягмб й)позволяет выполнять действия в зависимости от модификаций, произведенных в определенном столбце. Конструкция (COLUMNS ПРПЛТЕПО

позволяет обнаружить набор измененных столбцов, описанный значением маски типа var-Первые восемь столбцов представлены битовыми масками со значениями от I (для первого столбца) до 128 (для восьмого). Модифицированный столбец с порядковым номером девять и больше можно обнаружить с помощью функции SUBSTRING().

Помимо функции SUBSTRINGCp, есть и другие функции и системные команды, которые часто используются в триггерах. Функции UNT возвращает число строк, на которые повлияла модификация таблиць[. Системная команда RAISERROR выводит пользовательские или стандартные ения из системной таблиц ssagts. Еще одна важная команда, используемая в триггерах, - ROLLBACK TRANSACTION - позволяет контролировать откат событий UPDATE, INSERT или DEEETE. Для запрета возврата вызывающему приложению сообщений с числом строк, модифицированных операторами, в триггерах используется команда SET NOCOUNT ON, Триггеры часто применяют для расчета промежуточных результатов и лругих вычисляемых значений в таблицах, для вызова внешних действий и для реализации сложных мер по защите целостности данных.



Закрепление материала 297

Закрепление материала

9 I Приведенные ниже вопросы помогут вам лучше усвоить основные темы данной .jTTr/ главы. Если вы не сумеете ответить на вопрос, повторите материал соответствующего занятия и попытайтесь раз. Ответы для самопроверки вы найдете в при-ложени рп-:1 и ответы .

Вы определили для таблицы ограничения, один триггер INSTEAD OF и три триггера AFTER. Ваш коллега что проконтролировать порядок срабатывания триг-

геров не удастся. Прав он или нет и почему?

2. При обновлении первичного ключа таблицы обязательным условием является обновление всех ссылок внешних ключей на этот первичный ключ. Как решить эту задачу?

3. Перечислите четыре случая, когда уместно использовать триггеры.

4. Каким образом триггер отслеживает изменения, которые он вносит в модифицируемую таблицу?

5. Назовите событие удаления данных из таблицы, которое не вызывает срабатывания

DELETE-триггера.

Назовите системную хранимую процедуру и функцию, которые применяются для просмотра свойств триггера.

7. Какие два метода, использующие язык позволяют предотвратить исполнение триггера?

8. Запишите конструкции UPDATEDO), которая обнаруживает обновленные столбцы с порядковыми номерами 10 и

9. Перечислите три задачи в базах данных, которые обычно решаются с помощью триггеров.

10. Какая команда позволяет запретить в триггере вывод сведений о подсчете строк для

вызывающего приложения?

К какому типу относятся события, которые создают обе логические таблицы, Inserted и

12. Можно ли запрограммировать в триггерах вывод результирующих наборов и сообщений?



1 ... 98 99 100 [ 101 ] 102 103 104 ... 162

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