Разработка механизмов управления данными в базе при помощи триггеров
Триггеры позволяют автоматически выполнять указанные действия, касающиеся какой-то определенной таблицы. Ниже будет создан триггер, который будет добавлять удаленные данные в резервную копию таблицы. При помощи инструкции DECLARE CURSOR связывается имя курсора с выполняемым запросом; INSERT INTO tovari_info VALUES (id_tov = tovari.`id_tovara`, naz_tovara = tovari.`naz_tovara`, 'otsutstvuet… Читать ещё >
Разработка механизмов управления данными в базе при помощи триггеров (реферат, курсовая, диплом, контрольная)
При модификации, удалении или добавлении данных рабочей единицей является ряд (row, строка, запись). Курсор — это указатель на ряд. Курсор в SQL — это область в памяти БД, которая предназначена для хранения последовательности оператора SQL.
Работа с курсорами происходит по следующему алгоритму:
- · при помощи инструкции DECLARE CURSOR связывается имя курсора с выполняемым запросом;
- · оператор OPEN выполняет запрос, связанный с курсором, и устанавливает курсор перед первой записью результирующей таблицы;
- · оператор FETCH помещает курсор на первую запись результирующей таблицы и извлекает данные из записи в локальные переменные хранимой процедуры. Повторный вызов оператора FETCH приводит к помещению курсора к следующей записи и так до тех пор, пока записи в результирующей таблице не будут исчерпаны;
- · оператор CLOSE прекращает доступ к результирующей таблице и ликвидирует связь между курсором и результирующей таблицей.
А теперь попробуем создать триггеры.
Листинг 3.7. Триггер на обновление данных.
DELIMITER $$.
USE `kans_tovari`$$.
DROP TRIGGER IF EXISTS `trig_dost`$$.
CREATE.
DEFINER = 'root'@'localhost'.
TRIGGER `trig_dost` BEFORE UPDATE ON `dostavka`.
FOR EACH ROW BEGIN.
IF dostavka. status='nD' THEN UPDATE dostavka SET dostavka. status='nedostavleno';
ELSE UPDATE dostavka SET dostavka. status='Dostavleno';
END IF;
END$$.
DELIMITER;
Это триггер с использованием условия результатом которая является при обновления таблица доставка если статус доставка равно «nD» то будет не доставлено в обратном случае будет доставлено.
Ниже будет создан триггер, который будет добавлять удаленные данные в резервную копию таблицы.
Листинг 3.8. Триггер для хранения удаленных данных.
DELIMITER $$.
USE `kans_tovari`$$.
DROP TRIGGER IF EXISTS `tr2`$$.
CREATE.
DEFINER = 'root'@'localhost'.
TRIGGER `tr2` AFTER UPDATE ON `tovari`.
FOR EACH ROW BEGIN.
INSERT INTO tovari_info VALUES (id_tov = tovari.`id_tovara`, naz_tovara = tovari.`naz_tovara`, 'otsutstvuet');
END$$.
DELIMITER;
Триггеры позволяют автоматически выполнять указанные действия, касающиеся какой-то определенной таблицы.