Ключевые слова для создания триггеров

Ключевые слова для создания триггеров зависят от системы управления базами данных (СУБД), которую вы используете. Однако общие принципы создания триггеров схожи. Вот ключевые слова и конструкции, которые чаще всего используются при создании триггеров в различных СУБД:

1. SQL Server

  • CREATE TRIGGER: Основная команда для создания триггера.

  • ON: Указывает таблицу или представление, к которому привязан триггер.

  • AFTER: Указывает, что триггер будет срабатывать после выполнения операции (INSERT, UPDATE, DELETE).

  • BEFORE: Указывает, что триггер будет срабатывать до выполнения операции (INSERT, UPDATE, DELETE). Не поддерживается в SQL Server.

  • INSTEAD OF: Указывает, что триггер выполнится вместо выполнения указанной операции.

  • FOR: Альтернативное ключевое слово для указания действий, когда используется AFTER или INSTEAD OF. Не обязательно, но используется в старых версиях SQL Server.

Примеры:

-- Триггер AFTER для выполнения кода после вставки
CREATE TRIGGER trg_AfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
    -- Логика триггера
END;

-- Триггер INSTEAD OF для замены операции
CREATE TRIGGER trg_InsteadOfUpdate
ON Employees
INSTEAD OF UPDATE
AS
BEGIN
    -- Логика триггера
END;

2. MySQL

  • CREATE TRIGGER: Основная команда для создания триггера.

  • BEFORE: Указывает, что триггер будет срабатывать до выполнения операции (INSERT, UPDATE, DELETE).

  • AFTER: Указывает, что триггер будет срабатывать после выполнения операции (INSERT, UPDATE, DELETE).

  • INSERT, UPDATE, DELETE: Определяет, на какие операции триггер должен реагировать.

Примеры:

-- Триггер BEFORE для выполнения кода до вставки
CREATE TRIGGER trg_BeforeInsert
BEFORE INSERT
ON Employees
FOR EACH ROW
BEGIN
    -- Логика триггера
END;

-- Триггер AFTER для выполнения кода после удаления
CREATE TRIGGER trg_AfterDelete
AFTER DELETE
ON Employees
FOR EACH ROW
BEGIN
    -- Логика триггера
END;

3. PostgreSQL

  • CREATE TRIGGER: Основная команда для создания триггера.

  • BEFORE: Указывает, что триггер будет срабатывать до выполнения операции (INSERT, UPDATE, DELETE).

  • AFTER: Указывает, что триггер будет срабатывать после выполнения операции (INSERT, UPDATE, DELETE).

  • INSTEAD OF: Указывает, что триггер выполнится вместо выполнения указанной операции.

  • FOR EACH ROW: Указывает, что триггер будет срабатывать для каждой затронутой строки.

  • FOR EACH STATEMENT: Указывает, что триггер будет срабатывать один раз для каждого SQL-запроса (опция для триггеров, которые не привязаны к строкам, но поддерживается не всеми СУБД).

Примеры:

-- Триггер BEFORE для выполнения кода до вставки
CREATE OR REPLACE FUNCTION before_insert_employee()
RETURNS TRIGGER AS $$
BEGIN
    -- Логика триггера
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trg_BeforeInsert
BEFORE INSERT
ON Employees
FOR EACH ROW
EXECUTE FUNCTION before_insert_employee();

-- Триггер AFTER для выполнения кода после удаления
CREATE OR REPLACE FUNCTION after_delete_employee()
RETURNS TRIGGER AS $$
BEGIN
    -- Логика триггера
    RETURN OLD;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trg_AfterDelete
AFTER DELETE
ON Employees
FOR EACH ROW
EXECUTE FUNCTION after_delete_employee();

4. Oracle

  • CREATE TRIGGER: Основная команда для создания триггера.

  • BEFORE: Указывает, что триггер будет срабатывать до выполнения операции (INSERT, UPDATE, DELETE).

  • AFTER: Указывает, что триггер будет срабатывать после выполнения операции (INSERT, UPDATE, DELETE).

  • INSTEAD OF: Указывает, что триггер выполнится вместо выполнения указанной операции.

Примеры:

-- Триггер BEFORE для выполнения кода до вставки
CREATE OR REPLACE TRIGGER trg_BeforeInsert
BEFORE INSERT ON Employees
FOR EACH ROW
BEGIN
    -- Логика триггера
END;

-- Триггер AFTER для выполнения кода после обновления
CREATE OR REPLACE TRIGGER trg_AfterUpdate
AFTER UPDATE ON Employees
FOR EACH ROW
BEGIN
    -- Логика триггера
END;

Эти ключевые слова и конструкции помогут вам создать и управлять триггерами в различных СУБД. Каждый СУБД имеет свои особенности, поэтому всегда полезно ознакомиться с документацией для вашей конкретной системы.

Last updated