Тригеры -назначение, принцип работы и их логика
Автор: manankov72 • Ноябрь 22, 2021 • Лекция • 1,189 Слов (5 Страниц) • 244 Просмотры
Два вида триггеров:
- ALTER (используется по умолчанию)
Срабатывает после внесения данных в таблицу
- INSTED OF
Срабатывает в момент внесения данных в таблицу
Существует 3 типа триггеров:
- Insert trigger.
- Update trigger.
- Delete trigger.
Ограничение на использование триггеров:
Триггер должен выполнять только те операции, которые могут быть отменены в случае отката.
Временные таблицы:
inserted
deleted
Сравнение класса триггеров
Характеристика | Instead of | Alter |
Объект, к которому может быть привязан триггер | таблица или представление | Таблица |
Допустимое число триггеров | в таблице или представлении допуск не больше одного триггера в расчете на одно действие | к таблице можно привязать несколько Alter триггеров |
Порядок исполнения | не имеет значения | можно определить триггеры, срабатывающие первыми или последними. Для этого служит системная хранимая процедура S1_ settriger.order |
Создание триггера:
Create trigger [dbo.имя триггера]
ON [имя таблицы или представления]
FOR [класс триггера: Insert, Update, Delete]
AS
программа
Примеры триггеров.
Пример 1.
Запрет вставки новой строки.
Create trigger no insert on table 1
For insert
As
Rollback transaction
Команда rollback transaction вызывает откат транзакции.
Пример 2.
Обновление поля во всех записях.
Update table 1 Set a1 = 1
Пример 3.
Обновление поля записей, выбранных по условию.
Update table 2 Set sum > 1000 Where numer = 103
Пример 4.
Обновление сразу нескольких полей в записях таблиц, удовлетворяющих условию.
Update table 2 Set fam = `Петров`, imya = `Василий`, Otch = `Иванович`
Where numer = `6550`
Пример 5. Удаление записей
Удаление всех записей таблицы.
Delete from table 1
Удаление записей по заданному условию.
Delete from table 1 Where а1 > 100
Пример 6. Вставка записей
Команда Insert.
Insert into table [(список полей)] Values (список значений)
Добавление строки с присвоением конкретным полям заданных значений.
Insert into table 1 (а1, а2, а3) Values (10, `Петров`, `студент`)
Добавление записи без указания полей, которым будут заданы значения.
Insert into table Values (10, `Петров`, `01.01.2005`).
Переменные
DECLARE @a INТ, @ name char (20), @ char (20)
Select @ name =‘Справка’ 2)
Select @ a = count(*) from table1
Set @ а = (select sum (op1) FROM SALARY) 3)
Пример 1: DECLARE @a varchar (20)
DECLARE @b char (20)
Set @a = ‘Иван’ Set @ b = ‘Петрович’
Set @a = @a + @b
Пример 2: DECLARE @a NUMERIC (10,2) @a = 10,23
DECLARE @d DATETIME
Управляющие конструкции языка
Комментарии
/ * Это длинный
комментарий */
- - Это короткий комментарий.
BEGIN
. . . set @a = (select count * from table 1 )
. . . insert into table 2 10, 20
RETURN
END
IF
Синтаксис IF – усл
[группа операторов]
ELSE
[группа _ операторов]
IF @i >10 and @j <10
BEGIN
INSERT INTO table 1 ii, jj values (@i, @j)
UPDATE TABLE 2 set salary = @f where nomer <1000
END
ELSE
RETURN
Оператор цикла.
WHILE логическое _ выражение
группа_ операторов
[BREAK]
группа_ операторов
[CONTINUE]
BREAK прерывает выполнение цикла
CONTINUE возвращает к началу цикла. При этом, операторы, находящиеся ниже его, не будут выполнены.
...