Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_k_ekzamenu (1).doc
Скачиваний:
5
Добавлен:
28.09.2019
Размер:
275.97 Кб
Скачать

Триггеры. Создание и виды триггеров

    • Триггер вставки

    • Триггер удаления

    • Триггер обновления

Синтаксис оператора создания триггера:

CREATE TRIGGER <имя_триггера>

ON<имя_представления_или_таблицы>

[WUTH ENCRYPTION]

{FOR|AFTER|INSTEAD OF} {[INSERT] [,] [UPDATE]}

[WITH APPEND]

[NOT FOR REPLICATION] AS

<SQL-оператор>

  • WITH ENCRYPTIONшифрование кода создания триггера

  • Триггер, помеченный как FOR INSERT, будет стартовать каждый раз при добавлении в таблицу новых записей. Для каждой вставленной троки СУБД создает копию, хранящуюся в спец. таблице и видимую только для триггера – INSERTEDэта таблица существует только во время выполнения операции.

  • Триггеры удаления выполняются подобно предыдущему типу триггеров, но при их выполнении создается другая таблица – DELETE, в которую помещаются копии удаленных записей.

  • Триггеры обновления, объявляемые как FOR UPDATE, запускается каждый раз при внесении изменений в существующие записи таблицы. СУБД рассматривает операцию обновления как выполняемые последовательно операции удаления и последующей вставки новых данных. Создаются сразу две таблицы == INSERTED & DELETED.

  • Триггер типа INSERTED OF создает рабочие таблицы DELETED до выполнения проверки ограничений.

  • NOT FOR REPLICATION – триггер не будет стартовать при выполнении над таблицей операций, связанных с репликацией данных.

  • WITH APPENDданная опция выполняется только в режиме совместимости с версией 6.5.

  1. Триггеры типа INSTEAD OF. Особенности использования триггеров данного типа. (лаба5)

  1. Функции, определяемые пользователем. Типы функций, создание, достоинства использования, особенности вызова. (КСР МОЙ)

Определенные пользователем функции – набор команд Transact-SQL, сохраненных пользователем в виде функции.

Аналогично функциям в языках программирования, определяемые пользователем функции SQL Server представляют собой подпрограммы, которые принимают параметры, выполняют действие, например, сложные вычисления, и возвращают результат этого действия в виде значения. Возвращаемое значение может быть либо единичным скалярным значением, либо результирующим набором.

Отличие UDF от хранимых процедур состоит в следующем:

  • UDF не поддерживает выходных параметров.

  • UDF не может использоваться для получения результатов “FOR XML”. Результат “FOR XML” может быть в хранимой процедуре.

  • Ошибки Transact-SQL, которые вызывают отмену оператора с последующим переходом к следующему оператору в модуле (триггере или хранимой процедуре), внутри функции обрабатываются иначе. В функциях ошибки Transact-SQL прерывают выполнение функции. Это, в свою очередь, приводит к отмене оператора, который вызвал функцию.

  • Прежде чем определить UDF, вы должны определить характеристики UDF, такие как имя UDF, схема (квалификатор), число и типы данных входных параметров, типы возвращаемых значений. Затем вы выполняете оператор CREATE FUNCTION для создания UDF. После определения функции, если вы обнаружите, что некоторые из этих характеристик не подходят для функции, вы можете использовать оператор ALTER FUNCTION для изменения ее определения. Однако Вы не можете использовать оператор ALTER FUNCTION для преобразования скалярнозначной функции в табличнозначную и наоборот. Аналогично, вы не можете использовать ALTER FUNCTION для преобразования однострочной (inline) функции в многооператорную и наоборот. Вы можете удалить UDF при помощи оператора DROP FUNCTION.

  • Вы должны иметь привилегию CREATE FUNCTION для создания, изменения и удаления UDF. Пользователи, которые не являются владельцем, должны получить соответствующие привилегии на функцию, прежде чем они смогут использовать функцию в операторах Transact-SQL. Чтобы создать или изменить таблицы со ссылками на UDF в ограничении CHECK, предложении DEFAULT или определении вычисляемого столбца, вы должны также иметь привилегию REFERENCES на эти функции.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]