Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Хранимые процедуры

Хранимая процедура — последовательность команд SQL, хранящаяся на сервере БД в скомпилированном виде. Хранимые процедуры составляют для часто выполняемых операций. Например, каждый месяц сотрудникам надо пересчитывать зарплату. Можно создать хранимую процедуру, производящую перерасчет, и таким образом сэкономить время. Хранимая процедура может принимать параметры и возвращать результаты работы. Когда приложение использует процедуру, оно передает параметры, если они есть, а сервер СУБД затем выполняет хранимую процедуру без повторной компиляции (рис. 1.13).

Рис. 1.13. Выполнение хранимой процедуры
Использование хранимых процедур имеет несколько преимуществ с точки зрения производительности:
1.
Так как хранимые процедуры уже скомпилированы и записаны, то серверу требуется меньше времени для их выполнения.
2.
Снижается нагрузка на сеть, так как передается меньшее число операторов. Создать хранимую процедуру довольно просто. Следующий фрагмент кода иллюстрирует этот процесс:
CREATE PROC give_raise AS
UPDATE EMPLOYEES SET salary = salary * 1.10

В данном примере создается хранимая процедура give_raise, модифицирующая таблицу EMPLOYEES. Значение поля salary увеличивается на 10%.
Понятие триггера
Триггер — хранимая процедура, вызов которой происходит автоматически при выполнении с базой данных определенных действий: удаление, изменение, добавление записей. В зависимости от того, какой оператор модификации данных активизирует триггер, он называется триггером вставки (insert trigger), триггером удаления (delete trigger) или триггером обновления (update trigger).

 

Триггеры часто используются для обеспечения целостности на уровне ссылок, для выполнения каскадных удалений. Так как триггеры вызываются самой СУБД, нет возможности напрямую вызвать их из клиентского приложения. Триггер может быть вызван неявно другим триггером при совершении некоторых действий с базой данных:
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = ‘reminder’ AND type = ‘TR’)
DROP TRIGGER reminder
GO
CREATE TRIGGER reminder
ON titles
FOR INSERT, UPDATE, DELETE

 

AS
EXEC master.,xp_sendmail 'MaryM',
'DorT't forget to print a report for the distributors.'
GO

В данном примере приведено определение триггера reminder. Он выполняется при удалении, добавлении или изменении записи. В теле триггера вызывается хранимая процедура xpsendmail, отправляющая некой Мэри М. по электронной почте соответствующее напоминание.

Представление
Представление является виртуальной таблицей, записи в которую собраны с помощью оператора Select из одной и более таблиц. Работа с представлением осуществляется, как с обычной таблицей:
CREATE VIEW Example AS
SELECT Fieldl, Field2
FROM EXTABLE
WHERE Field3 = 3
SELECT * FROM Example

 

В приведенном примере создается представление Example, в которое включаются поля Fieldl и Field2. Выбираются записи, в которых значение поля Field2 равно трем. Последний оператор вызывает просмотр. Само по себе представление
не содержит данных, оно их получает каждый раз при вызове. Представления подобны окнам, через которые разработчик или пользователь просматривает информацию, которая фактически хранится в базовой таблице.
Преимущество использования представления заключается в том, что представление
будет модифицировано автоматически всякий раз, когда таблица, лежащая в его основе, изменяется. Содержание представления не фиксировано и переназначается каждый раз, когда оно вызывается тем или иным оператором SQL. В большинстве случаев представления могут использоваться как механизм защиты данных, поскольку даются права доступа к представлению базы данных, а не к самим таблицам, содержащим данные.
Представления могут быть модифицируемыми или позволяющими только чтение данных. Модифицируемое представление позволяет изменять данные в таблице.
Для того чтобы представление было модифицируемым, оно должно удовлетворять списку условий:
- В представлении должны быть собраны записи только из одной таблицы.
- В операторе SELECT не должны использоваться статистические функции, описатель DISTINCT, операнд HAVING, а также соединения таблиц.
- Представление не должно содержать полей, которые являлись бы агрегатными функциями.
- Для команды INSERT представление должно содержать любые поля таблицы, имеющие ограничение NOT NULL, если не задано иное ограничение.
В качестве примера можно взять модифицированное представление Example и показать, как в него добавляются записи при помощи небольшого фрагмента кода:
INSERT INTO Example
VALUES (333, ‘fds”)



   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru