П. Г. Демидова А. В. Зафиевский А. А. Короткин А. Н. Лататуев Базы данных Учебное пособие


Download 1.32 Mb.
Pdf ko'rish
bet46/94
Sana15.06.2023
Hajmi1.32 Mb.
#1487605
1   ...   42   43   44   45   46   47   48   49   ...   94
Bog'liq
Базы данных

3.10. Хранимые процедуры и триггеры 
При разработке крупных информационных систем типична 
ситуация, когда различные модули этой системы используют 
одни и те же типовые процедуры, например расчет средней зар-
платы по подразделению. В этом случае целесообразно перенести 
эти процедуры с клиентской части системы на серверную. Это 
позволит снизить нагрузку как на клиентскую часть, так и на 
компьютерную сеть, поскольку обмен между клиентом и сер-
вером уменьшится. Кроме того, это позволит централизовать мо-
дификацию совместно используемых модулей, так как они будут 
находиться в одном месте – на сервере. 
Перенос логики приложений на сервер имеет и отрица-
тельные стороны. Во-первых, увеличивается нагрузка на сервер, 


78 
что при большом числе запросов может оказаться критичным. 
Во-вторых, логика приложений становится менее прозрачной и 
при несогласованной модификации клиентской и серверной 
составляющих могут возникнуть ошибки, выявление которых 
будет представлять большие сложности. Наконец, надо отметить, 
что языки программирования, на которых пишутся серверные 
программы, являются системно зависимыми, причем весьма 
несовместимыми. Это в значительной степени затрудняет пере-
вод информационной системы на другую платформу, если такой 
переход предполагается когда-либо в будущем. 
Важной разновидностью хранимых процедур являются триг-
геры – процедуры, которые автоматически выполняются до, 
после или вместо определенных событий, к которым относятся 
вставка, удаление и замена строк в таблицах базы данных. 
Основным назначением триггеров является проверка названных 
операций на корректность, а также дополнительная обработка 
данных, например пересчет итоговых сумм, изменившихся в 
результате модификации таблицы. Языком программирования 
триггеров служит тот же язык, что и для хранимых процедур. 
Примером оператора создания триггера в СУБД MySQL 5.5 
может служить следующий текст: 
delimiter | 
CREATE TRIGGER testref BEFORE INSERT ON test1 
FOR EACH ROW BEGIN 
INSERT INTO test2 SET a2 = NEW.a1; 
DELETE FROM test3 WHERE a3 = NEW.a1; 
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; 
END; 

delimiter ; 
Не вдаваясь в специфику реализации языка SQL в этой 
СУБД, отметим, что перед выполнением команды создания триг-
гера, текст выполняемой части которого (тела триггера) состав-
ляет три строки, производится замена ограничителя строки (deli-
miter) для того, чтобы эти строки не выполнялись немедленно, а 
только записывались в базу данных. 


79 

Download 1.32 Mb.

Do'stlaringiz bilan baham:
1   ...   42   43   44   45   46   47   48   49   ...   94




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling