Triggere SQL



Triggerele sunt o clasa speciala de proceduri stocate, asociate unei tabele, definite pentru a fi lansate in executie automat la initierea unei operatii de tip UPDATE, INSERT sau DELETE asupra tabelei in cauza.
Triggerele sunt un instrument puternic pentru implementarea a ceea ce in aplicatiile de baze de date poarta numele de business rules. Termenul se refera la acele reguli, constrangeri, care tin in mod inerent de structura bazei de date si sunt induse de semnatica unei colectii de date, fiind comuna tuturor aplicatiilor care folosesc aceasta baza de date si independente de fiecare aplicatie in parte.

Sintaxa instructiunii CREATE TRIGGER:
CREATE TRIGGER nume_trigger
ON { tabela | vedere } [WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF }
{ [ DELETE ], [INSERT ] [,] [ UPDATE ] }
[ NOT FOR REPLICATION ]



AS
instructiune_sql [...n]
}
IF UPDATE ( coloana )
[ { AND | OR } UPDATE (coloana) ] [...n]
[ IF (COLUMS_UPDATE() { operator_biti }
masca_modificare )
{ operator_comparare } masca_test [...n ]
}
Instructiune_sql [..n ]
}
}
Exemple tipice de utilizare a triggerelor :
. Cascadarea operatiilor de modificare de la tabela curenta la alte tabele din baza de date. Exemplu: schimbarea drepturilor de acces la un server sa determine si schimbarea automata a drepturilor de acces a serverelor replicate.
. Anularea modificarilor care ar duce la violarea integritatii referentiale. Se pot folosi triggere ca mijloc alternativ, eventual mai sofisticate, la instrumentele de tip declarativ cum ar fi declaratii de chei traine
. Exprimare unor contrangeri mai complexe care nnu pot fi exprimate sub forma unor constrangeri de tip CHECK.