Trigger je speciální typ uložené procedury a má základní rozdělení:
-
DML trigger → jsou prováděny automaticky v odpovědi na DML události (insert update delete) nad tabulkou nebo view
-
DDL trigger → spouští se při: create, drop, alter, grant, deny, revoke opercích
-
Log on trigger → spouští se při vytvoření uživatelské session
DML trigger
Vytvořte trigger, který při zápisu nového záznamu do tabulky zapíše do logu určité informace:
create trigger tr_novyZaznamOsoby on osoby
after insert
AS
begin
declare @prijmeni NVARCHAR(30),@id_vloz Int
select @prijmeni = prijmeni, @id_vloz = insterted.id from inserted
insert into log (datum, atrib1, atrib2, atrib3, atrib4)
values(getdate(), 'vložení', @prijmeni, @id_vloz,' ');
endtriggery bývají obvykle volány buď:
-
před specifikovanou událostí → before
-
po specifikované události → after
V rámci jednoho triggeru existují dvě pseudo tabulky, které zpřístupňují nová a stará data (inserted, deleted).
V rámci triggeru lze pomocí rollback zrušit operaci, která trigger spustila.
Jeden trigger lze použít pro více akcí najednou.
UPOZORNĚNÍ: Pokud jsou nadměrně používány mohou potenciálně vést k problémům s výkonem jako je blokování, a pokud nejsou správně napsány mohou se ztratit data