Zapytanie o trigger

0

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

Tutaj ma jego konstrukcje

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


```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);
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.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1