Разделы презентаций


БАЗЫ ДАННЫХ И СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ

Содержание

ТриггерыПрограммная единица, срабатывающая при наступлении заданного события (вставки, удаления, обновления)

Слайды и текст этой презентации

Слайд 1ТРИГГЕРЫ
БАЗЫ ДАННЫХ И СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ

ТРИГГЕРЫБАЗЫ ДАННЫХ И СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ

Слайд 2Триггеры
Программная единица, срабатывающая при наступлении заданного события (вставки, удаления, обновления)


ТриггерыПрограммная единица, срабатывающая при наступлении заданного события (вставки, удаления, обновления)

Слайд 3Триггеры
Сложные проверки целостности
Автоматическая генерация первичного ключа
Аудит
Ограничение доступа

ТриггерыСложные проверки целостностиАвтоматическая генерация первичного ключаАудитОграничение доступа

Слайд 4Типы триггеров
По времени срабатывания
BEFORE, AFTER, INSTEAD OF
По типу события
INSERT, UPDATE,

DELETE
По области действия
FOR EACH ROW, FOR STATEMENT

Типы триггеровПо времени срабатыванияBEFORE, AFTER, INSTEAD OFПо типу событияINSERT, UPDATE, DELETEПо области действияFOR EACH ROW, FOR STATEMENT

Слайд 5Триггеры
Для одной таблицы могут быть определены триггеры разных типов

Для одной

таблицы могут быть определены триггеры одного типа
Порядок срабатывания НЕ ОПРЕДЕЛЯЕТСЯ

ТриггерыДля одной таблицы могут быть определены триггеры разных типовДля одной таблицы могут быть определены триггеры одного типаПорядок

Слайд 6Триггеры
В теле триггера могут вызываться
Процедуры
Функции
Операторы DML (INSERT, UPDATE, DELETE)

ТриггерыВ теле триггера могут вызыватьсяПроцедурыФункцииОператоры DML (INSERT, UPDATE, DELETE)

Слайд 7Триггеры
:NEW.имя – новое значение столбца
:OLD.имя – старое значение столбца

Триггеры:NEW.имя – новое значение столбца:OLD.имя – старое значение столбца

Слайд 8Триггеры
CREATE [OR REPLACE] TRIGGER trigger_name
timing
event1 [OR event2

OR event3]
ON object_name
[[REFERENCING OLD AS old | NEW AS new]

FOR EACH ROW
[WHEN (condition)]]
trigger_body

ТриггерыCREATE [OR REPLACE] TRIGGER trigger_name timing event1 [OR event2 OR event3]ON object_name[[REFERENCING OLD AS old | NEW

Слайд 9Триггеры
CREATE OR REPLACE TRIGGER tg_departments_id
BEFORE INSERT OR UPDATE ON departments
FOR

EACH ROW
BEGIN
IF :NEW.id_depart IS NULL
THEN
SELECT seq_depart.NEXTVAL
INTO : NEW.id_depart
FROM

dual
END IF;
END;


ТриггерыCREATE OR REPLACE TRIGGER tg_departments_idBEFORE INSERT OR UPDATE ON departmentsFOR EACH ROWBEGIN	IF :NEW.id_depart IS NULL 	THEN		SELECT seq_depart.NEXTVAL

Слайд 10Триггеры
CREATE OR REPLACE TRIGGER restrict_salary
BEFORE INSERT OR UPDATE OF salary

ON employees
FOR EACH ROW
BEGIN
IF NOT (:NEW.job_id IN ('AD_PRES', 'AD_VP'))

AND :NEW.salary > 15000 THEN
RAISE_APPLICATION_ERROR (-20202,
'Employee cannot earn more than $15,000.');
END IF;
END;

ТриггерыCREATE OR REPLACE TRIGGER restrict_salaryBEFORE INSERT OR UPDATE OF salary ON employeesFOR EACH ROWBEGIN IF NOT (:NEW.job_id

Слайд 11Триггеры
CREATE OR REPLACE TRIGGER audit_emp_values
AFTER DELETE OR INSERT OR UPDATE

ON employees
FOR EACH ROW
BEGIN
INSERT INTO audit_emp(user_name, time_stamp, id,

old_last_name, new_last_name, old_title,
new_title, old_salary, new_salary)
VALUES (USER, SYSDATE, :OLD.employee_id,
:OLD.last_name, :NEW.last_name, :OLD.job_id,
:NEW.job_id, :OLD.salary, :NEW.salary);
END;


ТриггерыCREATE OR REPLACE TRIGGER audit_emp_valuesAFTER DELETE OR INSERT OR UPDATE ON employeesFOR EACH ROWBEGIN INSERT INTO audit_emp(user_name,

Слайд 12Триггеры
CREATE OR REPLACE TRIGGER audit_tsttrig
BEFORE INSERT OR UPDATE OR

DELETE ON tsttrig
FOR EACH ROW
DECLARE
TIP VARCHAR2(10);
BEGIN
IF

INSERTING THEN TIP := 'INSERT';
ELSIF UPDATING THEN TIP := 'UPDATE';
ELSIF DELETING THEN TIP := 'DELETE';
END IF;
INSERT INTO myaudit (MYAUDIT.POLZ, MYAUDIT.VIZM, MYAUDIT.OPER, MYAUDIT.NZAP, MYAUDIT.HIST)
VALUES (USER, SYSDATE, TIP, :new.ID, 'Old Name: '||:old.NM||' New Name: '||:new.NM);
END AUDT_TSTTRIG;
ТриггерыCREATE OR REPLACE TRIGGER audit_tsttrig BEFORE INSERT OR UPDATE OR DELETE ON tsttrigFOR EACH ROW DECLARE 	TIP

Слайд 13Мутирующие таблицы
Мутирующая таблица – это таблица, модифицируемая в данный момент

предложением UPDATE, DELETE или INSERT, или таблица, которая может потребовать

обновления в результате действия декларативного ссылочного ограничения целостности DELETE CASCADE.

Из таких таблиц нельзя выбирать данные для использования внутри триггера

Мутирующие таблицыМутирующая таблица – это таблица, модифицируемая в данный момент предложением UPDATE, DELETE или INSERT, или таблица,

Слайд 14Мутирующие таблицы
CREATE OR REPLACE TRIGGER emp_bdr BEFOR DELETE ON emp FOR

EACH ROW BEGIN   UPDATE emp SET mgr = NULL WHERE mgr =

:old.empno; END; / DELETE emp WHERE empno = 111; /*Возникает следующая ошибка: ERROR at line 1: ORA-04091:таблица SCOTT.EMP мутирует, триггер/функция может ее не увидеть ORA-06512:в строке 2 ORA-04088:ошибка во время выполнения триггера 'SCOTT.EMP_BDR'*/
Мутирующие таблицыCREATE OR REPLACE TRIGGER emp_bdr BEFOR DELETE ON emp FOR EACH ROW BEGIN   UPDATE emp SET

Слайд 15Триггеры
DROP TRIGGER trigger_name;

ТриггерыDROP TRIGGER trigger_name;

Слайд 16Ограничения на создание триггеров
Максимальный размер – 32К
Не разрешены операторы DDL

и COMMIT, ROLLBACK, SAVEPOINT
Каскадное срабатывание не более 32 триггеров
Каждый последующий

триггер видит изменения предыдущего
Избегайте рекурсивных триггеров (UPDATE из триггера UPDATE)
Ограничения на создание триггеровМаксимальный размер – 32КНе разрешены операторы DDL и COMMIT, ROLLBACK, SAVEPOINTКаскадное срабатывание не более

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика