Что такое хранимые процедуры?
Это процедуры создаваемые на сервере и вызываемые из клиента. В статье про транзакции я уже создавал хранимую процедуру, теперь предлагаю рассмотреть вопрос более подробно.
Хранимая процедура (stored procedure) – это самостоятельный объект СУБД, вызываемый с клиентской машины. Преимущество в том, что не тратятся ресурсы клиентской машины, недостаток – в размывании логики. Приведу тот же пример, который уже был разобран в посте про транзакции.
Основные моменты – меняем delimiter, чтобы сервер не срабатывал на каждую “точку с запятой”
Параметры процедуры могут быть in по умолчанию, out, а также inout. В примере ниже, я рассматриваю вставку данных в таблицу, с помощью транзакции внутри хранимой процедуры. Вначале обрабатываем исключительную ситуацию declare exit handler for sqlexception…, и затем, собственно процедура;
Как создать хранимую процедуру?
(Забыл отобразить на рисунке команду Delimiter//)
Если сохранить уровень изоляции serializable, то всё должно быть более менее гладко. Проверка работы процедуры даёт положительный результат.
Как вызвать хранимую процедуру из консольного клиента MySQL?
Как удалить хранимую процедуру?
1 |
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name |
или в нашем примере…
1 |
drop procedure MyProc4; |
Что такое триггер?
Это разновидность хранимой процедуры, представляющий собой набор инструкций на языке SQL, автоматически выполняющийся в моменты…
BEFORE INSERT и AFTER INSERT…
BEFORE UPDATE и AFTER UPDATE
BEFORE DELETE и AFTER DELETE…
Вот здесь классная, подробная статья по работе с триггерами.
[block id=”mysql-first-steps”]