Sobes.tech
Junior

Какво са тригерите в релационна база данни?

sobes.tech AI

Отговор от AI

Trigger е специален тип съхранена процедура, която се изпълнява автоматично в отговор на определено събитие в таблица или изглед на базата данни.

Основните събития, които активират trigger:

  • INSERT: Вмъкване на нов ред.
  • UPDATE: Промяна на съществуващ ред.
  • DELETE: Изтриване на ред.

Trigger-ите могат да се активират преди (BEFORE) или след (AFTER) изпълнението на събитието.

Примери за използване на trigger-и:

  • Автоматично актуализиране на полета (например, дата на последна промяна).
  • Проверка на цялостта на данните.
  • Регистриране на промени (логване).
  • Каскадно актуализиране или изтриване на свързани данни.
-- Пример за създаване на AFTER INSERT trigger (фиктивен синтаксис)
CREATE TRIGGER audit_log_trigger
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION log_user_insert();

-- Пример за функция, извиквана от trigger
CREATE FUNCTION log_user_insert() RETURNS TRIGGER AS $$
BEGIN
  INSERT INTO audit_logs (table_name, operation, timestamp, new_data)
  VALUES ('users', 'INSERT', NOW(), row_to_json(NEW));
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

Предимства:

  • Централизиране на бизнес логиката.
  • Автоматизация на рутинни задачи.
  • Повишаване на цялостността на данните.

Недостатъци:

  • Трудност при отстраняване на грешки.
  • Потенциално влияние върху производителността.
  • Усложнение на логиката на приложението, тъй като част от нея се прехвърля на нивото на базата данни.