ВУЗ:
Составители:
Рубрика:
138
Триггер выполняется как неявно определенная транзакция, по-
этому внутри триггера допускается применение команд управления
транзакциями. В частности, при обнаружении нарушения ограниче-
ний целостности для прерывания выполнения триггера и отмены
всех изменений, которые пытался выполнить пользователь, необхо-
димо использовать команду ROLLBACK TRANSACTION. Для фик-
сации изменений, внесенных при выполнении транзакции, следует
использовать команду COMMIT TRANSACTION.
Для удаления триггера используется команда
DROP TRIGGER {имя_триггера} [,...n].
17.5. Примеры использования триггеров
Пример 106. Реализовать ограничение на значение.
При добавлении записи в таблицу Students автоматически
проверяется количество студентов в заданной группе и, если их ко-
личество больше 20, то происходит откат транзакции. Если же сту-
дентов в данной группе меньше 20, то происходит увеличение ко-
личества студентов на 1 и происходит добавление записи в таблицу
Students.
Команда вставки записи в таблицу Students может быть такой:
INSERT INTO Students (FIO, Nomer_zachetki, ID_Group,
Stipendiya) VALUES ('Ильин С.В.', '08ВП131', 2, 1250);
CREATE TRIGGER InsertStudent
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
)
Триггер выполняется как неявно определенная транзакция, по- этому внутри триггера допускается применение команд управления транзакциями. В частности, при обнаружении нарушения ограниче- ний целостности для прерывания выполнения триггера и отмены всех изменений, которые пытался выполнить пользователь, необхо- димо использовать команду ROLLBACK TRANSACTION. Для фик- сации изменений, внесенных при выполнении транзакции, следует использовать команду COMMIT TRANSACTION. Для удаления триггера используется команда DROP TRIGGER {имя_триггера} [,...n]. 17.5. Примеры использования триггеров Пример 106. Реализовать ограничение на значение. При добавлении записи в таблицу Students автоматически проверяется количество студентов в заданной группе и, если их ко- личество больше 20, то происходит откат транзакции. Если же сту- дентов в данной группе меньше 20, то происходит увеличение ко- личества студентов на 1 и происходит добавление записи в таблицу Students. Команда вставки записи в таблицу Students может быть такой: INSERT INTO Students (FIO, Nomer_zachetki, ID_Group, Stipendiya) VALUES ('Ильин С.В.', '08ВП131', 2, 1250); CREATE TRIGGER InsertStudent 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 ) 138
Страницы
- « первая
- ‹ предыдущая
- …
- 137
- 138
- 139
- 140
- 141
- …
- следующая ›
- последняя »