Hosting na mieru už od 5,5 Eur od spoločnosti WebSupport.sk
Sponzorovaný webhosting od WebSupport.sk


Triggre - SQL

rating: 31.797
10.05.2009 18:59 birdo

alebo ako sa dajú robiť skriptíky v databáze.

Triggre sú podobné uloženým podprogramom, až na nasledujúce výnimky:


  • triggre sa spúšťajú implicitne pri modifikácii tabuľky – nezávisle na užívateľovi modifikujúcom tabuľku alebo aplikáciu, ktorá modifikuje tabuľku.
  • triggre sa definujú len pre databázové tabuľky (pohľady ...)
  • triggre neprijímajú argumenty
  • triger sa dá spustiť len pri týchto DML príkazoch: UPDATE, INSERT a DELETE.


Triggre sú to najpodstatnejšie pri vývoji produktívnych dátovo-orientovaných systémov, pretože zaisťujú nasledujúce úlohy:

  • Nepovolia neplatné dátové transakcie
  • Zaisťujú komplexnú bezpečnosť
  • Zaisťujú referenčnú integritu (RI) cez všetky uzly v distribuovanej databázi
  • Vytvárajú strategické a komplexné aplikačné pravidlá
  • Zaisťujú sledovanie (audit)
  • Spravujú synchronizáciu tabuliek
  • Zaznamenávajú štatistiku často modifikovaných tabuliek

Poznámka:
Pretože sa triggre vyvolávajú implicitne, nepoužívajte pri implementácii rekurzívne volania, t.j. triggre volajúce iné triggre.

Syntax:



kde
OR REPLACE – predefinovanie triggra, ak už existuje
BEFORE / AFTER – kedy sa má trigger spúšťať pred operáciou , alebo po špecifikovanej DML operácii
INSTEAD OF - trigger, ktorý má preddefinovať operácie INSERT, DELETE, UPDATE. Využíva sa hlavne pri pohľadoch.
REFERENCING – definovanie premennej reprezentujúcej záznam pre nový, príp. pôvodný riadok.
FOR EACH ROW – ak operácia pracuje s viacerými riadkami relácie, trigger sa vykoná pre každý riadok zvlášť
WHEN - dodatočná podmienka spustenia triggra

Obmedzenia pri vytváraní triggra:


Pre sémantiku triggra platia nasledujúce obmedzenia:

  • Telo môže obsahovať DML SQL príkazy, ale SELECT príkazy musia byť príkazy typu SELECT ... INTO, alebo sa musia nachádzať v deklaráciách kurzora.
  • DDL deklarácie nie sú povolené v tele triggra.
  • Nie sú povolené žiadne príkazy riadiacie transakciu (COMMIT, SAVEPOINT, alebo ROLLBACK príkaz).
  • Vo volanom uloženom podprograme taktiež nie sú povolené žiadne príkazy riadiacich transakcií, pretože sa vykonávajú v rozsahu daného triggra.
  • Premenné typu LONG a LONG RAW nemôžu byť použité ako :OLD alebo :NEW hodnoty.

 

Zapnutie a vypnutie triggra:

Zapnutie a vypnutie vykonávania konkrétneho triggra:

Zapnutie a vypnutie vykonávania všetkých triggrov pre určitú tabuľku:

Zrušenie triggra:

Príklady:

http://www.weboit.sk/clanok/115/definovanie----autoincrement-stlpca----pomocu-sequence-v-tabulke.htm 

http://www.weboit.sk/clanok/125/logovanie-v-ramci-jednej-tabulky-triggre.htm 

 

Diskusia

Napíš priamu reakciu Napíš priamu reakciu
  • vytlač vytlač
  • vytlač kontaktuj používateľa
  • zvýš rating zvýš rating

birdo
birdo
(rating: 984.496)

Sieťar a webdeveloper. Pracujem a študujem v IT.

    TOP uchádzači
  1. xsound
          rating: 999.425
  2. birdo
          rating: 984.496
  3. Jumbo
          rating: 568.683
  4. Plechi
          rating: 236.368
  5. fuBoo
          rating: 78.710
  6. telra
          rating: 49.981
  7. janci
          rating: 46.975
  8. alphadog
          rating: 38.765
  9. pyotr
          rating: 36.060
  10. sekino
          rating: 27.351

celý rebríček

sportacko.skpcrevue.sk

O projekte | Napíšte nám | Podmienky používania | RSS
© od 2008 weboit.sk,