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
PL SQL logovaci trigger (procedura)
Re: PL SQL logovaci trigger (procedura)
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-- 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
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;Re: PL SQL logovaci trigger (procedura)
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
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;