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