Презентация «Триггеры в MS SQL Server»

Смотреть слайды в полном размере
Презентация «Триггеры в MS SQL Server»

Вы можете ознакомиться с презентацией онлайн, просмотреть текст и слайды к ней, а также, в случае, если она вам подходит - скачать файл для редактирования или печати. Документ содержит 52 слайда и доступен в формате ppt. Размер файла: 122.13 KB

Просмотреть и скачать

Pic.1
Триггеры в MS SQL Server
Триггеры в MS SQL Server
Pic.2
Что такое триггер Триггер – это откомпилированная SQL-процедура Исполнение обусловлено наступлением
Что такое триггер Триггер – это откомпилированная SQL-процедура Исполнение обусловлено наступлением определенных событий внутри реляционной базы данных Не имеет параметров Становится «одним целым» с …
Pic.3
Виды триггеров
Виды триггеров
Pic.4
Назначение триггеров Проверка корректности введенных данных и выполнение сложных ограничений целостн
Назначение триггеров Проверка корректности введенных данных и выполнение сложных ограничений целостности данных, которые трудно, если вообще возможно, поддерживать с помощью ограничений целостности, …
Pic.5
Когда нужны триггеры Чтобы оценить состояние таблицы до и после изменения данных и предпринять дейст
Когда нужны триггеры Чтобы оценить состояние таблицы до и после изменения данных и предпринять действия на основе этого различия. Для предотвращения действий, нарушающих бизнес-логику приложения …
Pic.6
DML-триггеры Триггер создается по одной таблице базы данных Может осуществлять доступ и к другим таб
DML-триггеры Триггер создается по одной таблице базы данных Может осуществлять доступ и к другим таблицам и объектам других баз данных. Триггеры нельзя создать по временным таблицам или системным …
Pic.7
DML - trigger Объект - таблица, VIEW Событие - insert, update, delete для таблицы и для VIEW. Время
DML - trigger Объект - таблица, VIEW Событие - insert, update, delete для таблицы и для VIEW. Время активации – до (вместо) или после выполнения оператора.
Pic.8
DML-триггеры Триггер – блок, выполняемый автоматически каждый раз, когда происходит определенное соб
DML-триггеры Триггер – блок, выполняемый автоматически каждый раз, когда происходит определенное событие в отличие от процедуры, которая должна быть вызвана явно Событие – INSERT, UPDATE и DELETE для …
Pic.9
Когда нужны триггеры Для каскадных изменений в связанных таблицах БД (если их нельзя выполнить при п
Когда нужны триггеры Для каскадных изменений в связанных таблицах БД (если их нельзя выполнить при помощи каскадных ограничений ссылочной целостности). Для предотвращения случайных или неправильных …
Pic.10
Еще… Журнализация и аудит. С помощью триггеров можно отслеживать изменения таблиц, для которых требу
Еще… Журнализация и аудит. С помощью триггеров можно отслеживать изменения таблиц, для которых требуется поддержка повышенного уровня безопасности. Данные об изменении таблиц могут сохраняться в …
Pic.11
Когда не надо использовать триггеры Не нужно реализовывать триггерами возможности, достигаемые испол
Когда не надо использовать триггеры Не нужно реализовывать триггерами возможности, достигаемые использованием декларативных средств СУБД (ограничения целостности или внешние ключи) Избегайте сложных …
Pic.12
Советы Не используйте триггеры, если можно применить проверочное ограничение CHECK Не используйте ог
Советы Не используйте триггеры, если можно применить проверочное ограничение CHECK Не используйте ограничение CHECK, если можно обойтись ограничением UNIQUE.
Pic.13
Основные параметры триггера Имя триггера Имя таблицы (или представления) Время срабатывания: AFTER(F
Основные параметры триггера Имя триггера Имя таблицы (или представления) Время срабатывания: AFTER(FOR) или INSTEAD OF Событие: INSERT, UPDATE, DELETE (TRUNCATE TABLE – это не удаление !) Тело …
Pic.14
Группировка событий Например, вы можете создать триггер, который будет активизироваться, когда проис
Группировка событий Например, вы можете создать триггер, который будет активизироваться, когда происходит выполнение оператора UPDATE или INSERT, и такой триггер мы будем называть триггером …
Pic.15
Правила работы триггера Триггеры запускаются после завершения оператора, который вызвал их активизац
Правила работы триггера Триггеры запускаются после завершения оператора, который вызвал их активизацию. Например, UPDATE-триггер не будет активизироваться, пока не будет выполнен оператор UPDATE. …
Pic.16
Правила работы триггера Триггер рассматривается как часть одной транзакции вместе с оператором, кото
Правила работы триггера Триггер рассматривается как часть одной транзакции вместе с оператором, который вызывает его. Поэтому из триггера можно вызвать оператор отката, и этот оператор выполнит откат …
Pic.17
Пример CREATE TRIGGER trg ON my_table FOR INSERT, UPDATE, DELETE AS select "this is trigger&quo
Пример CREATE TRIGGER trg ON my_table FOR INSERT, UPDATE, DELETE AS select "this is trigger"
Pic.18
Рекурсия Косвенная рекурсия При косвенной рекурсии приложение обновляет таблицу T1. Это событие вызы
Рекурсия Косвенная рекурсия При косвенной рекурсии приложение обновляет таблицу T1. Это событие вызывает срабатывание триггера TR1, обновляющего таблицу T2. Это вызывает срабатывание триггера T2 и …
Pic.19
При вызове триггера будут выполнены операторы SQL, указанные после ключевого слова AS. Вы можете пом
При вызове триггера будут выполнены операторы SQL, указанные после ключевого слова AS. Вы можете поместить сюда несколько операторов, включая программные конструкции, такие как IF и WHILE.
Pic.20
Выбор типа триггера Триггеры INSTEAD OF используются для: Выборочного запрещения исполнения команды,
Выбор типа триггера Триггеры INSTEAD OF используются для: Выборочного запрещения исполнения команды, для которой определен триггер (проверки пред-условия); Подсчета значений столбцов до завершения …
Pic.21
Циклы и вложенность SQL Server позволяет использовать вложенные триггеры, до 32 уровней вложенности.
Циклы и вложенность SQL Server позволяет использовать вложенные триггеры, до 32 уровней вложенности. Если любой из вложенных триггеров выполняет операцию ROLLBACK, то последующие триггеры не …
Pic.22
Триггер INSTEAD OF Триггер INSTEAD OF выполняется вместо запуска оператора SQL. Тем самым переопреде
Триггер INSTEAD OF Триггер INSTEAD OF выполняется вместо запуска оператора SQL. Тем самым переопределяется действие запускающего оператора. Можно задать по одному триггеру INSTEAD OF на один оператор …
Pic.23
Триггер AFTER Триггеры AFTER могут быть определены только в таблицах. Триггер AFTER активизируется п
Триггер AFTER Триггеры AFTER могут быть определены только в таблицах. Триггер AFTER активизируется после успешного выполнения всех операций, указанных в запускающем операторе или операторах SQL. Сюда …
Pic.24
Триггер AFTER Если у вас имеется несколько триггеров AFTER, определенных по таблице для определенног
Триггер AFTER Если у вас имеется несколько триггеров AFTER, определенных по таблице для определенного оператора или набора операторов, то вы можете задать, какой триггер будет активизирован первым и …
Pic.25
Порядок AFTER-триггеров sp_settriggerorder @triggername = 'AnotherTrigger', @order = '
Порядок AFTER-триггеров sp_settriggerorder @triggername = 'AnotherTrigger', @order = 'first' sp_settriggerorder @triggername = 'MyTrigger', @order = 'last' …
Pic.26
Использование таблиц deleted и inserted При создании триггера вы имеете доступ к двум временным табл
Использование таблиц deleted и inserted При создании триггера вы имеете доступ к двум временным таблицам с именами deleted и inserted. Они хранятся в памяти, а не на диске. Эти две таблицы имеют …
Pic.27
Использование inserted, deleted inserted – вставленные значения (для INSERT, UPDATE) deleted – удале
Использование inserted, deleted inserted – вставленные значения (для INSERT, UPDATE) deleted – удаленные значения (для UPDATE, DELETE)
Pic.28
Использование таблиц deleted и inserted Таблица deleted содержит копии строк, на которые повлиял опе
Использование таблиц deleted и inserted Таблица deleted содержит копии строк, на которые повлиял оператор DELETE или UPDATE. Строки, удаляемые из таблицы данного триггера, перемещаются в таблицу …
Pic.29
Использование таблиц deleted и inserted Поскольку оператор UPDATE обрабатывается как DELETE, после к
Использование таблиц deleted и inserted Поскольку оператор UPDATE обрабатывается как DELETE, после которого следует INSERT, то при использовании оператора UPDATE старые значения строк копируются в …
Pic.30
«Триггеры в MS SQL Server», слайд 30
Pic.31
Создание триггера CREATE TRIGGER [ schema_name. ]trigger_name ON { table | view } { FOR | AFTER | IN
Создание триггера CREATE TRIGGER [ schema_name. ]trigger_name ON { table | view } { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } AS { sql_statement}
Pic.32
CREATE TRIGGER plus_1 ON table1 instead of insert AS insert table1 (id, col1) select id+1, col1 from
CREATE TRIGGER plus_1 ON table1 instead of insert AS insert table1 (id, col1) select id+1, col1 from inserted;
Pic.33
Триггер представляет собой специальный тип хранимых процедур, запускаемых сервером автоматически при
Триггер представляет собой специальный тип хранимых процедур, запускаемых сервером автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Каждый триггер привязывается к …
Pic.34
Обработка исключений Команда ROLLBACK указывает серверу остановить обработку модификации и запретить
Обработка исключений Команда ROLLBACK указывает серверу остановить обработку модификации и запретить транзакцию. Существует также команда RAISEERROR, с помощью которой вы можете отправить сообщение …
Pic.35
Обработка исключений сообщение об ошибке RAISERROR ('Error raised because of wrong data. '
Обработка исключений сообщение об ошибке RAISERROR ('Error raised because of wrong data. ', -- Message text. 16, -- Severity. 1 -- State. ); Severity – число от 0 до 25 Определенный …
Pic.36
Функции об ошибках Функция ERROR_LINE() возвращает номер строки, в которой произошла ошибка. Функция
Функции об ошибках Функция ERROR_LINE() возвращает номер строки, в которой произошла ошибка. Функция ERROR_MESSAGE() возвращает текст сообщения, которое будет возвращено приложению. Текст содержит …
Pic.37
Пример триггера CREATE TRIGGER LowCredit ON Purchasing. PurchaseOrderHeader AFTER INSERT AS BEGIN DE
Пример триггера CREATE TRIGGER LowCredit ON Purchasing. PurchaseOrderHeader AFTER INSERT AS BEGIN DECLARE @creditrating tinyint, @vendorid int ; SELECT @creditrating = v. CreditRating, @vendorid = p. …
Pic.38
Управление триггерами Отключение/включение триггера: DISABLE/ENABLE TRIGGER trigger_name ON object_n
Управление триггерами Отключение/включение триггера: DISABLE/ENABLE TRIGGER trigger_name ON object_name Отключение/включение всех триггеров таблицы: DISABLE/ENABLE TRIGGER ALL ON object_name …
Pic.39
Изменение триггера ALTER TRIGGER tr_name ON on_board after UPDATE AS update on_board set iks='b
Изменение триггера ALTER TRIGGER tr_name ON on_board after UPDATE AS update on_board set iks='b' where id in (select id from inserted)
Pic.40
Удаление триггера DROP TRIGGER tr_name
Удаление триггера DROP TRIGGER tr_name
Pic.41
Активация/деактивация триггера DISABLE TRIGGER {trigger_name [ ,. . . n ] | ALL } ON { object_name}
Активация/деактивация триггера DISABLE TRIGGER {trigger_name [ ,. . . n ] | ALL } ON { object_name} ; ENABLE TRIGGER {trigger_name [ ,. . . n ] | ALL } ON { object_name}
Pic.42
Применение триггеров Защита Запрещение доступа в зависимости от значений данных Учет Ведение журнало
Применение триггеров Защита Запрещение доступа в зависимости от значений данных Учет Ведение журналов изменений Целостность данных Сложные правила целостности Сложная ссылочная целостность …
Pic.43
Типы триггеров
Типы триггеров
Pic.44
DDL - trigger Триггеры DDL могут быть использованы в административных задачах, таких как аудит и рег
DDL - trigger Триггеры DDL могут быть использованы в административных задачах, таких как аудит и регулирование операций базы данных. Действие этих триггеров распространяется на все команды одного …
Pic.45
DDL - триггеры Триггеры DDL, как и обычные триггеры, вызывают срабатывание хранимых процедур в ответ
DDL - триггеры Триггеры DDL, как и обычные триггеры, вызывают срабатывание хранимых процедур в ответ на событие. Срабатывают в ответ на разнообразные события языка определения данных (DDL). Эти …
Pic.46
Задачи для DDL - триггеров Предотвратить внесение определенных изменений в схему базы данных. Выполн
Задачи для DDL - триггеров Предотвратить внесение определенных изменений в схему базы данных. Выполнить в базе данных некоторые действия в ответ на изменения в схеме базы данных. Записывать изменения …
Pic.47
CREATE TRIGGER trigger_name ON { DATABASE | ALL SERVER } { FOR | AFTER } { event_type | event_group
CREATE TRIGGER trigger_name ON { DATABASE | ALL SERVER } { FOR | AFTER } { event_type | event_group } AS { sql_statement [ ; ] [ ,. . . n ] [ ; ] }
Pic.48
Создание/удаление DDL-тр CREATE TRIGGER ddl_trig_database ON ALL SERVER FOR CREATE_DATABASE AS PRINT
Создание/удаление DDL-тр CREATE TRIGGER ddl_trig_database ON ALL SERVER FOR CREATE_DATABASE AS PRINT 'Database Created. ' DROP TRIGGER ddl_trig_database ON ALL SERVER;
Pic.49
DDL - trigger CREATE TRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT 'You must
DDL - trigger CREATE TRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT 'You must disable Trigger "safety" to drop or alter tables!' ROLLBACK ;
Pic.50
Для одной инструкции Transact-SQL можно создать несколько триггеров DDL. Триггер DDL и инструкция, п
Для одной инструкции Transact-SQL можно создать несколько триггеров DDL. Триггер DDL и инструкция, приводящая к его срабатыванию, выполняются в одной транзакции. Откат событий ALTER DATABASE, …
Pic.51
Logon - trigger Триггеры входа выполняют хранимые процедуры в ответ на событие LOGON. Это событие вы
Logon - trigger Триггеры входа выполняют хранимые процедуры в ответ на событие LOGON. Это событие вызывается при установке пользовательского сеанса с экземпляром SQL Server. Триггеры входа …
Pic.52
Logon - trigger CREATE TRIGGER trigger_name ON ALL SERVER { FOR| AFTER } LOGON AS { sql_statement }
Logon - trigger CREATE TRIGGER trigger_name ON ALL SERVER { FOR| AFTER } LOGON AS { sql_statement }


Скачать презентацию

Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!