.
Храни́мая процеду́ра — объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере.
Хранимая процедура (далее просто Процедура) имеет:
1) Блок характеристик:
- Название
- Ограничение числа циклов
- Блок вывода результата операции
2) Блок параметров:
- Входные и выходные параметры
- Переменные
- Текстовые константы
3) Блок позиций.
В блоке позиций хранится тело Процедуры.
Каждая позиция представляет собой единицу набора SQL инструкций. Положение позиций и их зависимости друг относительно друга задают последовательность выполнения процедуры.Три́ггер — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных: добавлением, изменением или удалением.
Триггер может быть запущен при наступлении 6 событий:
1) Перед добавлением данных
2) После добавления данных
3) Перед изменением данных
4) После изменения данных
5) Перед удалением данных
6) После удаления данных
Так же доступно исполнение кода триггера при комбинации всех этих 6 параметров. Например, можно сделать чтобы триггер выполнялся при добавлении ИЛИ изменении данных.
Такие свойства бывают полезны в случаях, если например необходимо записывать последнюю дату изменения данных. Эта дата должна в первый раз быть записана при создании, а потом при каждом изменении и вместо создания 2 триггеров можно сделать один на 2 события.
Набор свойств Триггера немного отличается от Процедуры:
1) Блок характеристик:
- Название
- Ограничение числа циклов
2) Блок параметров:
- Использование значений полей до события и после события
- Переменные
- Текстовые константы
3) Блок позиций.
Концепция безопасности.
В процедурах и триггерах реализована функция ограничения числа шагов программы. В свойствах процедуры она выведена в виде например "mf:1000". Эта запись означает что данная Процедура или Триггер не может выполнить более 1000 шагов. На 1001 он завершиться с ошибкой и откатом всех изменений данных.
При этом не важно какой вложенности будет программа, если Процедура или Триггер имеет вложенную Процедуру, то значение mf будет передано на вход вложенной Процедуре и она уже начнет отсчет не с нуля, а с переданного значения.
Данное значение можно изменить только административным путем, позвонив нашим специалистам. Они посмотрят на Вашу процедуру, поймут ее предназначение и если Вам объективно надо увеличить данное значение, для выполнения Ваших задач, это будет конечно же сделано. Зачем сделано ограничение циклов?
Своим пользователям мы даем в руки очень серьезный инструмент, который подразумевает определенный уровень ответственности. Пользователь например случайно (или специально) может сделать бесконечный цикл добавления данных, или подсчет числа PI отобрав на себя значительные ресурсы сервера.
Данный механизм предназначен для превентивной защиты от ошибок программирования. . |