PL SQL logovaci trigger (procedura)

Programovacie jazyky, rady, poradňa...
yankee
Medium Star
Medium Star
Príspevky: 384
Registrovaný: 06 júl 2006, 1:13

PL SQL logovaci trigger (procedura)

Príspevok od používateľa yankee »

Caute mam spravit proceduru, ktora bude triggrami logovat zmeny v konktretnej tabulke (insert, update, delete). Viem spravit 3 triggre kazdy pre jednu udalost, alebo jeden trigger pre vsetky tri udalosti. Ale neviem spravit JEDNU proceduru tak, aby sa mi do logovacej tabulky, ukladali stlpce UDALOST(hodnoty insert/update/delete) a CAS ZMENY(toto viem).

konktretne taketo bolo zadanie: spravit logovacie triggre (pouzite proceduru na logovanie udajov do tabulky - spolocnu), ktora zachyti vsetky zmeny na zvolenej tabulke = insert,delete,update

koliduje mi tam procedura/trigger - nieco take som este nerobil

viete pomoct ako na to? diky

-- v podstate by stacilo spravit trigger ktory sa inak sprava pri kazdej udalosti, teda v tele triggeru bude insert, ktory na zaklade udalosti vlozi do logovacej tabulky hodnotu insert/update/delete, ale to tiez neviem ako spravit
Blade.m
Medium Star
Medium Star
Príspevky: 454
Registrovaný: 06 apr 2007, 20:10
Bydlisko: Čadca

Re: PL SQL logovaci trigger (procedura)

Príspevok od používateľa Blade.m »

-- v podstate by stacilo spravit trigger ktory sa inak sprava pri kazdej udalosti, teda v tele triggeru bude insert, ktory na zaklade udalosti vlozi do logovacej tabulky hodnotu insert/update/delete, ale to tiez neviem ako spravit
presne ako si napísal, musíš spraviť trigger nad konkrétnou tabuľkou a vždy pri nejakej operácii (INSERT/UPDATE/DELETE) pomocou vstavaných funkcii si vieš zistiť, čo sa práve vykonalo a neurobiš insert, ale update v tabuľke kde si zaznamenávaš údaje o týchto operaciach

mohlo by to vyzerať nejak takto:

Kód: Vybrať všetko

CREATE OR REPLACE TRIGGER Kontrola 
AFTER INSERT OR UPDATE OR DELETE
ON Nazov_tabulky
BEGIN
     IF INSERTING THEN
          UPDATE Tabulka SET pocet_operacii = pocet_operacii + 1 WHERE Operacia = 'insert';
     ELSEIF UPDATING THEN
          UPDATE Tabulka SET pocet_operacii = pocet_operacii + 1 WHERE Operacia = 'update';
     ELSE
          UPDATE Tabulka SET pocet_operacii = pocet_operacii + 1 WHERE Operacia = 'delete';
     END IF;
END;
yankee
Medium Star
Medium Star
Príspevky: 384
Registrovaný: 06 júl 2006, 1:13

Re: PL SQL logovaci trigger (procedura)

Príspevok od používateľa yankee »

vdaka, nakoniec som nasiel podobny trigger aj na nete ale nefungoval mi spravne, az teraz ked som si pozrel tvoj nasiel som si v nom chybu, pouzival som else if namiesto elsif

takze takto som to spravil

Kód: Vybrať všetko

CREATE OR REPLACE TRIGGER  log_trigger
AFTER INSERT OR UPDATE OR DELETE ON terminovany_ucet
FOR EACH ROW
BEGIN
IF inserting THEN insert into log_tvu values('insert', CURRENT_TIMESTAMP);
ELSIF updating THEN insert into log_tvu values('update', CURRENT_TIMESTAMP);
ELSIF deleting THEN insert into log_tvu values('delete', CURRENT_TIMESTAMP);
END IF;
END;
Napísať odpoveď