Триггеры и хранимые процедуры
Триггеры и хранимые процедуры – это именованные блоки кода SQL, которые заранее откомпилированы и хранятся на сервере для того, чтобы быстро производить выполнение запросов, валидацию данных и выполнять другие часто вызываемые функции. Хранение и выполнение кода на сервере позволяет создавать код только один раз, а не в каждом приложении, работающем с базой данных, что экономит время при написании и сопровождении программ. При этом гарантируется, что целостность данных и бизнес-правила поддерживаются независимо от того, какое именно клиентское приложение обращается к данным. Триггеры и хранимые процедуры не требуется пересылать по сети из клиентского приложения, что значительно снижает сетевой трафик. Хранимой процедурой называется именованный набор предварительно откомпилированных команд SQL, который может вызываться из клиентского приложения или из другой хранимой процедуры. Создать хранимую процедуру в ERwin DM можно в диалоге Stored Procedures (меню Database/Stored Procedures). При создании текста хранимых процедур можно использовать макросы (макрокоманды) ERwin DM. При генерации кода хранимой процедуры вместо макрокоманд подставляются имена таблиц, колонок, переменные и другие фрагменты кода, соответствующие синтаксису выбранной СУБД. В зависимости от размерности модели данных использование макрокоманд ERwin DM позволяет сократить число строк SQL, написанных проектировщиком, в десятки, сотни и даже тысячи раз. Триггером называется процедура, которая выполняется автоматически как реакция на событие. Таким событием может быть вставка, изменение или удаление строки в соответствующей таблице. Триггер сообщает СУБД, какие действия нужно совершить при выполнении команд SQL INSERT, UPDATE, DELETE для обеспечения дополнительной функциональности, выполняемой на сервере. Триггер ссылочной целостности – это особый вид триггера, используемый для поддержания целостности между двумя таблицами, которые связаны между собой. Если строка в одной таблице вставляется, изменяется или удаляется, то триггер ссылочной целостности (RI-триггер) сообщает СУБД, что нужно делать с теми строками в других таблицах, у которых значение внешнего ключа совпадает со значением первичного ключа вставленной (измененной или удаленной) строки. По умолчанию ERwin DM генерирует триггеры, дублирующие декларативную ссылочную целостность. Для генерации триггеров ERwin DM использует механизм шаблонов – специальных скриптов, использующих макрокоманды, что позволяет сократить число строк SQL, написанных проектировщиком, в десятки, сотни и даже тысячи раз. Шаблоны ссылочной целостности, генерируемые ERwin по умолчанию, можно изменять [2]. Скрипты «до и после генерации» Скриптами «до и после генерации» (pre & post scripts) называются скрипты SQL, которые ERwin DM выполняет до или сразу после генерации таблиц или схемы в целом (pre & post schema generation). Например, при прямой генерации базы данных из модели ERwin DM может выполнить скрипт «до генерации схемы», который удаляет старую базу данных и создает новую до того, как начать генерацию таблиц, индексов и др. объектов. Скрипты уровня таблиц могут быть созданы в диалоге Pre & Post Scripts (контекстное меню таблицы). Скрипты уровня схемы можно создать в диалоге Pre & Post Scripts (меню Database/Pre & Post Scripts/Model-Level), Создание скриптов аналогично созданию хранимых процедур. При создании текста скрипта также как, при создании хранимых процедур, можно использовать макросы ERwin DM.
|