Для того, щоб створити тригер, необхідно мати системний
привілей CREATE TRIGGER. Для створення тригера в схемі,
відмінної від поточної схеми користувача, потрібен системний
привілей CREATE ANY TRIGGER.
Оператор визначення тригера має такий синтаксис:
CREATE [OR REPLACE ] TRIGGER [ім'я_схеми.] ім'я_тригера
BEFORE або AFTER
INSERT або DELETE або UPDATE [OF перелік_імен_полів]
[OR INSERT або DELETE або UPDATE [OF перелік_імен_полів]
ON [ім'я_схеми.]ім'я_таблиці або ім'я_представлення
[FOR EACH ROW] [WHEN умова]
тіло_програми_мовою_PL/SQL;
Ключове слово OR REPLACE означає безумовне заміщення
старого тексту тригера. Якщо ключове слово OR REPLACE не
зазначено і тригер уже визначений, то заміщення старого коду
тригера не відбувається і повертається повідомлення про помилку.
Ключові слова BEFORE чи AFTER означають виконання коду
тригера до або після операторів маніпулювання даними, які
ініціювали запуск тригера. Наприклад, якщо тригер застосовується
для перевірки повноважень користувача на право виконання
операції, то, звичайно, потрібно запускати тригер до виконання
операції (із ключовим словом BEFORE). Якщо тригер застосовують
для аудиту, то розумно його запускати після виконання операції (із
ключовим словом AFTER).
Слова INSERT, DELETE або UPDATE визначають конкретний
оператор, який запускає тригер. Необов’язкове ключове слово OR
приєднує додатковий оператор, який теж запускає тригер. В умові
запуску тригера повинен бути обов’язково вказаний хоча б один
оператор із трьох. Якщо перелік операторів, які запускають тригер,
включає оператор UPDATE, то в умовах його спрацювання можна
задавати конкретні назви полів.
Ключове слово ON задає ім’я таблиці або представлення,
асоційовані з тригером.
Необов’язкове ключове слово FOR EACH ROW визначає тригер,
як рядковий. Код тригера може бути асоційований або з операцією
над таблицею в цілому, або з рядком, над яким виконується
операція. Залежно від цього тригери поділяються на операторні й
рядкові. Як правило, операторні тригери використовуються для
перевірки правил, які оперують таблицею в цілому, а рядкові – для
перевірки обмежень цілісності під час вставки рядків.