Курсовая работа: Особенности разработки триггеров и хранимых процедур в СУБД
INSERT INTO UD_DAN
VALUES(OLD.TAB_NO,OLD.FAM,OLD.IMIA,OLD.OTSH,OLD.G_R,OLD.ADRES,OLD.TEL,OLD.DATA_P,OLD.DATA_U, OLD.OBRAZ,OLD.SEM_POLOJ, OLD.S_N_PASPORT, OLD.K_V, OLD.K_O, OLD.K_P);
END^
SET TERM;^
Теперь если выполнить команду
DELETE FROM DAN
WHERE TAB_NO=1014; // (и 1013)
произойдёт конечно удаление строки из таблицы DAN, сработает триггер и удаленная строка запишется в таблицу UD_DAN, которая собственно и предназначена для хранения удаленных данных.
Что бы отключить триггер следует выполнить команду
ALTER TRIGGER < имя триггера > INACTIVE;
Что бы включить триггер следует выполнить команду
ALTER TRIGGER < имя триггера > ACTIVE ;
Что бы удалить триггер команда
DROP TRIGGER <имя триггера>;
Следующий триггер, срабатывает ДО ВСТАВКИ (BEFORE INSERT ) в таблицу DAN и заполняет поле первичного ключа (TAB_NO).
SET TERM ^;
CREATE TRIGGER VS_T FOR DAN
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.TAB_NO IS NULL ) THEN
NEW.TAB_NO=GEN_ID (TAB, 1);
END ^
SET TERM; ^
Для этого триггера потребуется генератор с начальным значением 1012, так как это максимальный табельный номер уже заполненной таблицы DAN и, новым сотрудникам, вносимым в таблицу, будут присвоены табельные номера, следующие за 1012.
CREATE GENERATOR TAB;
SET GENERATOR TAB TO 1012;
При вставки новой строки в таблицу DAN, даже не указав значение поля TAB_NO,
INSERT INTO DAN (FAM, IMIA, OTSH, G_R, ADRES, TEL, DATA_P, DATA_U, OBRAZ,