Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2017-12-21 | 223 |
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
|
|
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!