Sobes.tech
Junior

Mis on triggereid relatsioonilises andmebaasis?

sobes.tech AI

Vastus AI-lt

Trigger on spetsiaalne salvestatud protseduur, mis automaatselt täidetakse vastusena kindlale sündmusele andmebaasi tabelis või vaates.

Peamised sündmused, mis käivitavad triggeri:

  • INSERT: Uue rea lisamine.
  • UPDATE: Eksisteeriva rea muutmine.
  • DELETE: Rea kustutamine.

Triggerid võivad käivituda enne (BEFORE) või pärast (AFTER) sündmuse täitmist.

Triggerite kasutamise näited:

  • Väli automaatne uuendamine (näiteks viimase muutmise kuupäev).
  • Andmete terviklikkuse kontroll.
  • Muudatuste logimine.
  • Seotud andmete kaskaadne uuendamine või kustutamine.
-- AFTER INSERT triggeri loomise näide (mõttetu süntaks)
CREATE TRIGGER audit_log_trigger
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION log_user_insert();

-- Funktsioon, mida trigger kutsub
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;

Eelised:

  • Äri-logika keskne haldus.
  • Rutiinsete ülesannete automatiseerimine.
  • Andmete terviklikkuse parandamine.

Puudused:

  • Veaotsing keeruline.
  • Võimalik mõju jõudlusele.
  • Tarkvara keerukus, kuna osa logikast liigub andmebaasi tasandile.