Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

2004 г

СУБД ЛИНТЕР. Технический обзор.

Научно-производственное предприятие РЕЛЭКС
www.relex.ru

содержание

C. Триггеры: связь событий и хранимых процедур

Хранимые процедуры очень удобны, когда пользователь хочет реализовать некоторый достаточно сложный алгоритм обработки данных и запустить его в нужный момент. Однако в приложениях часто требуется выполнить какие-либо действия при условии возникновения определенной ситуации.

Триггеры обеспечивают целостность, выполняя комплексную межтабличную проверку допустимости данных вне контекста справочной целостности и ограничений проверки.

Наиболее важное назначение триггеров - определение глобального делового правила. Например, триггер может использоваться для обеспечения того, чтобы менеджеру службы продаж посылалось сообщение о недостаточном количестве товара на складе и необходимости пополнения запаса, если общее количество товара на складе стало меньше чем зарезервированное.

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

Итак, триггер – это хранимая процедура, которая автоматически вызывается при выполнении того или иного действия с конкретной таблицей, направленного на изменение данных. Явно триггер вызываться не может. При создании триггера указывается, к какой таблице и к какому действию (UPDATE, INSERT или DELETE) он привязывается.

Триггер может вызываться один раз при выполнении всего запроса, либо каждый раз, когда необходимо обновить, удалить или вставить очередную строку в таблице (триггер FOR EACH ROW). Причем можно указать, когда должен вызываться триггер: до операции (триггер BEFORE) или после (триггер AFTER).

Основной частью триггера является его тело, которое определяется точно так же, как тело хранимой процедуры и содержит алгоритм реакции триггера на вызвавшее его действие. В теле триггера допустимы любые SQL-запросы, вызовы хранимых процедур и т.д. Для триггеров на каждую строку внутри тела можно использовать значения полей записи, которые были до операции изменения и значения, которые должны быть установлены после операции.

Эти значения доступны через поля предопределенных переменных-курсоров OLD и NEW, структура которых соответствует структуре таблицы. В триггере BEFORE можно присвоить полям переменной NEW новые значения, и при выполнении операции INSERT или UPDATE они будут использованы вместо старых.

Единственным значением, которое может вернуть триггер, является логическое значение, при чем, если триггер BEFORE возвращает «ложно», соответствующая операция отменяется для данной строки или всего SQL-оператора, в зависимости от вида триггера.

D. Отладка хранимых процедур ЛИНТЕР

Для упрощения процесса разработки хранимых процедур и триггеров ядро ЛИНТЕР содержит встроенный механизм отладки хранимых процедур. Пользователь отлаживает процедуру (триггер) при помощи специальной утилиты – отладчика, который обменивается с ядром специальными управляющими командами. Наличие встроенного в ядро механизма отладки позволяет отлаживать процедуры (триггеры) в реальных рабочих условиях (на сервере), в среде запросов и действий конкретного реального приложения.

Для того, чтобы начать отладку, пользователь открывает так называемую “отладочную сессию” для процедуры, после чего ядро работает с данной процедурой (триггером) в режиме отладки, реагируя на команды отладчика и передавая ему всю необходимую информацию.

Можно отлаживать лишь те процедуры (триггеры), которые оттранслированы с отладочной информацией. На необходимость включения отладочной информации указывает ключевая фраза FOR DEBUG в заголовке процедуры или триггера, как в приведенных выше примерах.

Для начала отладки конкретной исполняемой процедуры (триггера) необходимо либо запустить процедуру из-под отладчика, либо ждать, пока какое-нибудь приложение не вызовет эту процедуру или какой-нибудь запрос не запустит триггер (для триггеров это единственный способ).

Второй вариант предоставляет мощную возможность по отладке процедур и триггеров в рамках их “родной” среды, когда они запущены в штатном порядке. Отладчик позволяет просматривать исходный текст процедуры (триггера), выделяя строку с текущим исполняемым оператором.

Процесс отладки включает возможность пошагового выполнения процедур (триггеров), установки разнообразных точек останова и выполнения до одной из них, выполнения с заходом внутрь вызываемых дочерних процедур, наблюдения за значениями локальных переменных и конкретных выражений, стеком вызова.

Кроме обычных точек останова (останов каждый раз при выполнении конкретного оператора) поддерживаются так же условные точки (останов только в случае выполнения конкретного условия, например, i >10) и точки останова на изменение значений.

Отладчик также помогает разобраться в причине возникновения исключений, приостанавливая выполнение процедур и указывая место, где произошло исключение.

содержание       назад       вперед

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...