- •Триггеры insert
- •Триггеры delete
- •3. В нашем случае триггер будет выглядеть следующим образом:
- •5. Далее сохраняем триггер, щелкнув по кнопке Save
- •Триггеры update.
- •Триггеры instead of
- •3. В нашем случае триггер будет выглядеть следующим образом:
- •5. Далее сохраняем триггер, щелкнув по кнопке Save
- •3. В нашем случае триггер будет выглядеть следующим образом:
- •5. Далее сохраняем триггер, щелкнув по кнопке Save
- •3. В нашем случае триггер будет выглядеть следующим образом:
- •Insert sotrydnik
- •5. Далее сохраняем триггер, щелкнув по кнопке Save
- •Расширенные технологии.
- •3. В нашем случае триггер будет выглядеть следующим образом:
- •5. Далее сохраняем триггер, щелкнув по кнопке Save
- •Insert sotrydnik
- •Values (‘s28’,’Петров’,’Валерий’,’Михайлович’,’10000’,’2’,’1’)
- •Формирование сообщений об ошибках. Функция raiserror().
- •3. В нашем случае триггер будет выглядеть следующим образом:
- •5. Далее сохраняем триггер, щелкнув по кнопке Save
- •Триггеры ddl.
3. В нашем случае триггер будет выглядеть следующим образом:
CREATE TRIGGER PRIMER3
ON SOTRYDNIK
AFTER update
AS
BEGIN
SET NOCOUNT ON;
IF (SELECT OKLAD FROM INSERTED)<0
PRINT'НЕЛЬЗЯ ВСТАВЛЯТЬ ЗАПИСЬ С ОТРИЦАТЕЛЬНЫМ ОКЛАДОМ'
ROLLBACK
END
4. Выполняем триггер, нажав на кнопку
на панели инструментов. В результате в нижней части экрана мы увидим строчку «Command(s) completedsuccessfully».
5. Далее сохраняем триггер, щелкнув по кнопке Save
6. Чтобы протестировать новый триггер, необходимо создать запрос, нажав на кнопку New Query , следующего содержания
USE LUDI
UPDATE SOTRYDNIK
SET OKLAD=’-12000’
WHERE FAM=’Петров’
Выполняем запрос, щелкнув по кнопке , в нижней части окна увидим сообщение об ошибке:
Сотрудник не должен иметь отрицательный оклад
Итак, данный триггер UPDATEзапрещает вставлять запись о сотруднике с отрицательным окладом.
Часто возникают ситуации, когда обновление большинства столбцов не интересует, но существует один столбец , который нельзя изменять ни в коем случае.
пример: допустим, у нас есть таблица «Sotrydnik» БД “Ludi”. Необходимо запретить изменять столбец, содержащий номер телефона.
1. Открыть SQL Server Management Studio. В окне Object ExplorerразвернутьпапкуБД «Ludi” - Programmability – Triggers.
2. Щелкаем правой кнопкой мыши на папке Triggersи выбираем командуNewTriggers.
3. В нашем случае триггер будет выглядеть следующим образом:
CREATE TRIGGER primer4
ON sotrydnik
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IFUPDATE(Telefon)
PRINT'Нельзя изменять телефонный номер сотрудника'
ROLLBACK
END
GO
4. Выполняем триггер, нажав на кнопку на панели инструментов. В результате в нижней части экрана мы увидим строчку «Command(s)completedsuccessfully».
5. Далее сохраняем триггер, щелкнув по кнопке Save
6. Чтобы протестировать новый триггер, необходимо создать запрос, нажав на кнопку New Query , следующего содержания
USE LUDI
UPDATE SOTRYDNIK
SET Tab_nom='89152369897'
WHERE FAM='Петров'
Выполняем запрос, щелкнув по кнопке , в нижней части окна увидим сообщение об ошибке:
Нельзя изменять номер телефона сотрудника.
Триггеры instead of
Часто возникает ситуация, когда в представлении отображаются не все столбцы, а вставить запись нужно во все столбцы. Обычные триггеры не позволят этого сделать, а вот триггер INSTEADOF позволяет.
пример: допустим, у нас есть таблица «Sotrydnik» БД “Ludi”. Необходимо создать представление, которое не будет отображать номер телефона сотрудника.
1. Создадим запрос, нажав на кнопку New Query следующего содержания
USE SOTRYDNIK
GO
CREATE VIEW PHX_SOTRYDNIK
SELECT Tab_nom,Fam,Name, Otch
FROM SOTRYDNIK
2. Чтобы удостовериться, что это представление отображает все столбцы, кроме столбца с номером телефона, создадим запрос, нажав на кнопку New Query следующего содержания
USE LUDI
SELECT * FROM PHX_SOTRYDNIK
3. Выполняем запрос, щелкнув по кнопке , в нижней части окна увидим таблицу, содержащую все столбцы кроме столбца «Телефон».
4. Попытаемся вставить через представление данные нового сотрудника. Для этого создадим запрос, нажав на кнопку New Query ,
следующего содержания:
USE LUDI
INSERT PHX_SOTRYDNIK
VALUES (‘S40’,’Иванов’,’Алексей’,’Юрьевич’,’33000’,’89152367896’)
5. Выполняем запрос, щелкнув по кнопке , в нижней части окна увидим сообщение об ошибке.
Итак, создадим триггер, позволяющий вставлять строку, содержащую всю информацию в данном представлении PHX_SOTRYDNIK.
1. Открыть SQL Server Management Studio. В окне Object ExplorerразвернутьпапкуБД «Ludi” - Programmability – Triggers.
2. Щелкаем правой кнопкой мыши на папке Triggersи выбираем командуNewTriggers.
