Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2017-12-21 | 225 |
5.00
из
|
Заказать работу |
|
|
ON Students FOR Insert
AS
DECLARE @ID INT
IF @@ROWCOUNT=1
BEGIN
SELECT @ID=ID_Group
FROM INSERTED
BEGIN
IF 20>(SELECT Kol_stud
FROM Groups
WHERE ID_Group=@ID
)
BEGIN
UPDATE Groups
SET Kol_stud=Kol_stud+1
WHERE ID_Group=@ID
PRINT 'студент успешно добавлен в данную группу'
END
ELSE
BEGIN
ROLLBACK TRANSACTION
PRINT 'Группа переполнена!Выберите другую группу!'
END
END
END;
Пример 2. Создать триггер для обработки операции удаления записи из таблицы Students, например, такой команды:
DELETE FROM Students WHERE ID_Student=82;
При удалении студента из группы количество студентов в группе уменьшается на единицу:
CREATE TRIGGER TriggerDelete
ON Students FOR Delete
AS
DECLARE @ID INT, @ID_Grup INT
IF @@ROWCOUNT=1
BEGIN
SELECT @ID=ID_Group
FROM DELETED
UPDATE Groups
SET Kol_stud=Kol_stud-1
WHERE ID_Group=@ID
PRINT 'студент успешно удален из группы'
END;
17.6. Использование хранимых процедур
в триггерах
Хранимые процедуры могут быть активизированы не только пользовательскими приложениями, но и триггерами.
Пример 3. Создадим процедуру, обновляющую количество студентов в группе:
CREATE PROCEDURE UpdateKolStud
@group INT
AS
DECLARE @newKolStud SMALLINT
BEGIN
SELECT @newKolStud = COUNT(*) FROM Students WHERE ID_Group = @group
UPDATE Groups SET Kol_Stud = @newKolStud WHERE ID_Group = @group
END;
Теперь создадим триггер, который будет срабатывать при удалении студента из базы данных или добавлении студента в базу данных:
CREATE TRIGGER KolStudTrigger
ON Students
AFTER INSERT, DELETE
AS
DECLARE @gr1 INT, @gr2 INT
if @@rowcount = 1
BEGIN
SELECT @Gr1 = ID_Group FROM deleted
SELECT @Gr2 = ID_Group FROM inserted
IF (SELECT DISTINCT ID_Group FROM deleted) IS NOT NULL
EXEC UpdateKolStud @group = @gr1;
IF (SELECT DISTINCT ID_Group FROM inserted) IS NOT NULL
EXEC UpdateKolStud @group = @gr2;
END;
Вид таблицы до транзакции приведен на рис.1.
Рис. 1 – Таблица Students
В группе № 4 обучается 24 человека.
Результат выполнения запроса приведен на рис. 2.
|
Рис. 2 – Таблица Groups
Удалим студента № 7, который учится в группе № 4:
DELETE FROM Students WHERE ID_Student = 7;
После удаления записи о студенте количество студентов в группе уменьшилось на единицу.
Вид таблицы после выполнения транзакции приведен на рис. 3.
Рис. 3 – Таблица Groups
Теперь вновь добавим удаленного нами студента:
INSERT INTO Students (FIO, Nomer_zachetki, ID_Group, Stipendiya) VALUES ('Макарь В.А.', '06ВП118', 4, 1200);
Результат выполнения запроса приведен на рис. 4.
Рис. 4. Добавление строки в таблицу
Вид таблицы после транзакции приведен на рис. 5.
Рис. 5 – Таблица Groups
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!