Sobes.tech
Junior

Czym są wyzwalacze w relacyjnej bazie danych?

sobes.tech AI

Odpowiedź od AI

Trigger to specjalny rodzaj procedury składowanej, która jest automatycznie wykonywana w odpowiedzi na określone zdarzenie w tabeli lub widoku bazy danych.

Główne zdarzenia wywołujące trigger:

  • INSERT: Wstawienie nowego wiersza.
  • UPDATE: Zmiana istniejącego wiersza.
  • DELETE: Usunięcie wiersza.

Triggery mogą się uruchamiać przed (BEFORE) lub po (AFTER) wykonaniu zdarzenia.

Przykłady zastosowania triggerów:

  • Automatyczna aktualizacja pól (np. data ostatniej zmiany).
  • Sprawdzanie integralności danych.
  • Rejestrowanie zmian (logowanie).
  • Kaskadowa aktualizacja lub usuwanie powiązanych danych.
-- Przykład tworzenia triggera AFTER INSERT (fikcyjna składnia)
CREATE TRIGGER audit_log_trigger
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION log_user_insert();

-- Przykład funkcji wywoływanej przez 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;

Zalety:

  • Centralizacja logiki biznesowej.
  • Automatyzacja rutynowych zadań.
  • Zwiększenie integralności danych.

Wady:

  • Trudności w debugowaniu.
  • Potencjalny wpływ na wydajność.
  • Złożoność logiki aplikacji, ponieważ część jest przeniesiona na poziom bazy danych.