Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD.doc
Скачиваний:
4
Добавлен:
28.10.2018
Размер:
483.84 Кб
Скачать

27.Тригери в tsql.

Триггеры - это специальный вид хранимых процедур, который выполняется при попытке изменения данных, которые он защищает. Триггер "срабатывает" при использовании команд INSERT, UPDATE и DELETE. Триггер применяется для поддержки целостности данных. Триггер запустить явно нельзя. Он "срабатывает" при определенных условиях. Триггеры, как правило, применяются для поддержки бизнес - правил (правил данной организации).

Свойства триггеров:

  1. Триггер связан с конкретной таблицей.

  2. Триггер выполняется автоматически при попытке изменения защищенных данных.

  3. Триггер не вызывается напрямую, т.к. не имеет параметров.

  4. Триггер имеет 16 уровней вложенности.

В команде создания триггеров обязательно указывается таблица, для которой создается, и событие, при котором он "срабатывает". Как правило, указывается также реакция на нарушение ограничений: просто сообщение, что нарушено правило и изменение "срабатывает" или сообщение и откат транзакций (изменение не "срабатывает"). CREATE TRIGGER [<имя_владельца>.]<имя_триггера> ON [<имя_владельца>.]<имя_таблицы> FOR INSERT | UPDATE | DELETE (,) - можно указать несколько операций через запятую  AS <команда> Каждая таблица может иметь не более, чем 3 триггера. При этом все действия может обрабатывать один триггер. Триггер может создавать только владелец таблицы. Триггеры не создаются для представлений и временных таблиц. В триггере нельзя использовать следующие команды:

CREATE ... всех видов

ALTER ...

GRANT ...

REVOKE ...

SELECT ... INTO ...

28. Курсори в tsql.

Курсоры в SQL предназначены для доступа к данным. Запросы осуществляются ко всем таблицам в целом. Результат запроса - это таблица. Для доступа к БД на низком уровне применяются курсоры. Они позволяют выполнять обработку БД на сервере, но значительно снижают производительность. Курсор является альтернативой запроса в том случае, когда результаты запроса обрабатываются по записям. В курсоре работа с одной строкой не зависит от остальных. При этом исчезает необходимость в индексировании, т.к. однозначно выбирается позиция на строке. Для одновременной работы с несколькими строками используется кэширование. С курсорами в Transact SQL связаны последовательно следующие операции:

  1. DECLARE - эта команда создает в памяти разделяемую структуру, содержащую определение курсора.

  2. OPEN - открытие курсора.

  3. FETCH - курсор возвращает данные для операции.

  4. CLOSE - закрывается открытый курсор, освобождается блокировка.

  5. DEALLOCATE - освобождение разделяемой памяти

Различают три вида курсоров:

  1. Курсоры сервера (выполняются в хранимых процедурах).

  2. Курсоры клиента.

  3. Курсоры транзакций.

Пример: DECLARE Cur CURSOR FOR SELECT НомПок, ИмяПокуп, ГородПок FROM C ORDER BY НомПок

Изменение данных в курсоре.

UPDATE <имя_таблицы> SET <имя_поля>={DEFAULT | NULL | expr} [1..n]

WHERE CURRENT OF <имя_курсора>

Удаление данных.

DELETE <имя_таблицы> WHERE CURRENT OF <имя_курсора>

Будет удалятся текущая строка курсора.

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