Курсовая работа: Особенности разработки триггеров и хранимых процедур в СУБД
VALUES ('Кротов', 'Андрей', 'Федорович', '12.08.1961', 'Кирова 52-124', '281344', '21.02.2008', '28.03.2008','среднее''холост', '9999 22', '900' , '50' , '1');
То есть триггер перед вставкой произвел проверку, указал ли пользователь значение поля TAB_NO, и не обнаружив такового, воспользовался генератором, увеличив его значение на 1, занес полученное в поле TAB_NO нового сотрудника.
Генератор, в свою очередь, теперь хранит значение 1014.
Кроме контекстной переменной NEW, существует переменная OLD. В отличие от NEW, OLD содержит старые значения записи, которые удаляются или изменяются. Например, можно использовать переменную OLD для получения значений записей, которые удаляются из таблицы.
Следующий триггер срабатывает ПОСЛЕ УДАЛЕНИЯ (AFTER DELETE) и записывает строки, удаленные из таблицы в отдельную таблицу.
Сначала необходимо создать таблицу для хранения удаленных данных.
CREATE TABLE DAN_D
(TAB_NO_D Float ,
FAM_D Varchar (20),
IMIA _D Varchar (20),
OTSH_D Varchar (20),
G_R_D Date ,
ADRES_D Varchar (20),
TEL_D Char (6) );
SET TERM ^;
CREATE TRIGGER DEL_DAN FOR DAN
ACTIVE AFTER DELETE POSITION 0
AS
BEGIN
INSERT INTO DAN_D
VALUES (OLD.TAB_NO, OLD.FAMILIA, OLD. IMIA E, OLD.OTSHO, OLD.GOD_R,
OLD.ADRES, OLD.TEL);
END ^
SET TERM; ^
Как только происходит удаление строки из таблицы DANNIE,
DELETE FROM DANNIE
WHERE TAB_NO=1013;
Так как, в данной БД при удалении строки из таблицы DAN удаляется и строка из таблицы NASH (начисления) с идентичным табельным номером (TAB_NO), уместно было бы создать триггер, который сохранял бы и данные из таблицы NASH. Чтобы не создавать лишние таблицы для хранения удаленных данных можно расширить уже созданную таблицу DAN_D.
ALTER TABLE DAN_D ALL KOD_Z_D FLOAT;