Zapytanie o trigger

DP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Cześć, dopiero się uczę o bazach i mam pytanie jak działa dokładnie trigger ?

Tutaj ma jego konstrukcje

Kopiuj
SET TERM ^ ;

CREATE TRIGGER name [FOR table/view] 
 [IN]ACTIVE 
 [ON {[DIS]CONNECT | TRANSACTION {START | COMMIT | ROLLBACK}} ] 
 [{BEFORE | AFTER} INSERT OR UPDATE OR DELETE] 
 POSITION number 
AS 
BEGIN 
    /* enter trigger code here */ 
END^

SET TERM ; ^

Rozumiem że jest to np jakiś kod który może się wykonać przed wstawieniem wartości do tabeli ?
Czy mogę np sprawdzać czy podane ID > 50 ?

Mam też w swojej bazie constraint czy działa on na podobnej zasadzie ?
Tutaj sprawdzam checkiem czy ID > 20 i czy np nr kontaktowy ma wiecej niż 8 znaków

Kopiuj

```ALTER TABLE CZLONEK_KOLA ADD CONSTRAINT CHKK_CZLONEK_KOLA_NR
  CHECK (char_length (NR_KONTAKTOWY) > 8);
ALTER TABLE CZLONEK_KOLA ADD CONSTRAINT CHK_CZLONEK_KOLA
  check (id >20);
MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1107
0

Generalnie w triggerze możesz zrobić dużo. Można sprawdzać czy zostały spełnione odpowiednie warunki, można wykonywać dodatkowe operacje, jak np zapis/modyfikacja danych w tabelach pomocniczych. Ogólnie to duży temat. Jednak nie polecam pisania dużej logiki w bazie danych. Odbije się to czkawką szybciej niż myślisz. Ja stosuję triggery tylko do prostych czynności jak np. skopiowanie wybranego rekordu w nieco innej postaci do tabeli pomocniczej. Po to aby niektóre zapytania były prostsze albo szybciej się wykonywały.

Co do checków to tak. Można użyć albo checka albo napisać trigger.

S2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Nigdy nie pisz logiki aplikacji w triggerach. Użyj ich do logowania zmian w tabelach.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.