Sobes.tech
Junior

Kas yra trigeriai reliacinėje duomenų bazėje?

sobes.tech AI

Atsakymas iš AI

Trigger yra specialus saugotos procedūros tipas, kuris automatiškai vykdomas kaip atsakas į tam tikrą įvykį duomenų bazės lentelėje ar vaizde.

Pagrindiniai įvykiai, kurie sukelia trigger:

  • INSERT: Naujos eilutės įterpimas.
  • UPDATE: Esamos eilutės keitimas.
  • DELETE: Eilutės ištrynimas.

Trigger gali būti aktyvuotas prieš (BEFORE) arba po (AFTER) įvykio vykdymo.

Trigger naudojimo pavyzdžiai:

  • Automatinis laukų atnaujinimas (pvz., paskutinio keitimo data).
  • Duomenų vientisumo patikrinimas.
  • Pakeitimų registravimas (žurnalas).
  • Susijusių duomenų kaskadinis atnaujinimas arba ištrynimas.
-- AFTER INSERT trigger sukūrimo pavyzdys (fiktinė sintaksė)
CREATE TRIGGER audit_log_trigger
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION log_user_insert();

-- Funkcija, iškviečiama 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;

Privalumai:

  • Verslo logikos centravimas.
  • Rutinių užduočių automatizavimas.
  • Duomenų vientisumo gerinimas.

Trūkumai:

  • Klaidų aptikimas sudėtingas.
  • Potencialus poveikis našumui.
  • Programinės logikos sudėtingumas, nes dalis jos perkeliama į duomenų bazės lygį.