Основы языка TRANSACT SQL. Казакова И.А. - 139 стр.

UptoLike

Составители: 

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