Wyzwalacze użytkownika

Obiekty użytkownika

Wyzwalacze służą do wykonywania jakiejś akcji podczas tworzenia, modyfikowania lub usuwania rekordów dowolnej tabeli. Może to być np. polecenie SQL typu UPDATE, INSERT bądź DELETE, wywołanie procedury składowanej lub tylko pokazanie dowolnego komunikatu.

W celu utworzenia własnego wyzwalacza wybieramy z menu Ustawienia pozycję Wyzwalacze użytkownika.

Dla nowego wyzwalacza określamy:

UWAGA 1
Aby wykonać wyzwalaczem wiele poleceń SQL za jadnym razem, należy w definicji użyć klauzuli go, która rozdziela zapytania SQL; np:
update tabela_1 set [pole_1]=1
go
update tabela_2 set [pole_1]=1
go

UWAGA 2
Ponieważ wyzwalacz OnChangeField jest wyzwalany zawsze, gdy wartość dowolnego pola w rekordzie (kontrolki) została zmieniona, przy dużej ilości pól w tabeli będzie on wykonywany wielokrotnie, co może spowolnić działanie programu. Aby tego uniknąć można w definicji wyzwalacza zastosować klauzulę onchange={nazwa_pola_1},{nazwa_pola_1},...,{nazwa_pola_n}, wtedy będzie on wyzwalany tylko przy zmianie wartości pól wymienionych w klauzuli.

UWAGA 3
Jeśli chcemy wykryć, czy tabela jest w danej chwili w trybie Insert (nowy rekord został dostawiony); np. w AfterPost chcemy aby wyzwalacz inaczej zachowywał się przy wstawieniu rekordu niż przy edycji, można użyć zmiennej specjalnej <INS>, która zwraca wtedy True; np:
if <INS> begin
  zrób coś, bo wstawiono nowy rekord
end
else begin
  zrób coś, bo istniejący rekord został zmieniony
end

UWAGA 4
Jeśli po usunięciu rekordu w AfterDelete chcemy zmodyfikować jakieś powiązania skasowanego rekordu z innymi tabelami (np.usunąć z nich jego Ide), to można wykorzystać zmienną specjalną <DEL_IDE>, która zwraca identyfikator usuniętego rekordu; np:
update TABELA set [X_IRec]=0 where [X_IRec]=<DEL_IDE>

Przykład wykorzystania wyzwalacza jest dostępny tutaj.