Triggery (SQL)

Trigger je nßstroj, kter² zajiÜ¥uje automatickΘ provedenφ programu v jazyce SQL p°i vlo₧enφ, zruÜenφ nebo zm∞n∞ zßznamu v urΦitΘ tabulce. Trigger m∙₧e nap°φklad zajistit, ₧e:

Triggery zjednoduÜujφ tvorbu aplikacφ, proto₧e p°enßÜejφ Φßst prßce databßzovΘ aplikace na server. Umo₧≥ujφ centralizovanΘ definovßnφ pravidel platn²ch pro informaΦnφ systΘm. Existuje-li nap°φklad v podnikovΘm informaΦnφm systΘmu tabulka zam∞stnanc∙, lze pomocφ trigger∙ popsat, jakΘ vÜechny akce musφ b²t provedeny p°i p°ijetφ nebo propuÜt∞nφ zam∞stnance, zm∞n∞ platu nebo p°e°azenφ do jinΘho odd∞lenφ. Tyto akce se naprogramujφ na jednom mφst∞, ale budou slou₧it vÜem aplikacφm, kterΘ manipulujφ s tabulkou zam∞stnanc∙. Dodr₧enφ pravidel pro ·dr₧bu evidence zam∞stnanc∙ pak bude zajiÜ¥ovat server automaticky a konzistence dat bude zajiÜt∞na bez ohledu na mo₧nΘ chyby v m∞nφcφch se aplikacφch.

Trigger je pojmenovan²m objektem pat°φcφm do databßzovΘ aplikace. Mß tyto vlastnosti:

P°i provedenφ konkrΘtnφ akce mohou b²t spln∞ny podmφnky pro spuÜt∞nφ vφce ne₧ jednoho triggeru. V takovΘm p°φpad∞ jsou spuÜt∞ny po °ad∞ vÜechny. V souΦasnΘ podobn∞ nßvrhu normy SQL 3 nenφ zahrnut zp∙sob, jak by u₧ivatel v textu trigger∙ mohl definovat po°adφ jejich spouÜt∞nφ. Je pravd∞podobnΘ, ₧e p°ed definitivnφ redakcφ normy bude tento zp∙sob specifikovßn a potΘ bude p°idßn i do WinBase602.

Provßd∞nφ trigger∙ m∙₧e m∞nit obsah databßze a tφm spouÜt∞t dalÜφ triggery. SpouÜt∞nφ trigger∙ se m∙₧e do sebe libovoln∞ zano°ovat.

Pokud p°φkaz, kter² spustil trigger, je odvolßn (kv∙li chyb∞ nebo v d∙sledku provedenφ p°φkazu ROLLBACK), pak takΘ vÜechny akce, kterΘ v databßzi trigger provedl, budou odvolßny. Je-li trigger spuÜt∞n v transakci, pak se provßdφ jako souΦßst tΘto transakce. Chyba, kterß nastane p°i provßd∞nφ triggeru, mß stejnΘ d∙sledky, jako chyba v p°φkazu, kter² trigger spustil.

Uvnit° trigger∙ se nesmφ provßd∞t transakΦnφ p°φkazy COMMIT ani ROLLBACK, v opaΦnΘm p°φpad∞ nastane chybov² sqlstate 2D000.

P°i provßd∞nφ trigger∙ se nekontrolujφ prßva. Aby dφky tomu nemohlo dojφt k neoprßvn∞nΘmu zßpisu, m∙₧e triggery vytvß°et pouze sprßvce databßze resp. sprßvce aplikace.

INSERT a UPDATE triggery se nespouÜt∞jφ p°i importu dat do tabulky. DELETE triggery se nespouÜt∞jφ p°i smazßnφ tabulky jako objektu (p°i mazßnφ zßznam∙ samoz°ejm∞ ano).

Podrobnosti o triggerech lze najφt na nßsledujφcφch strßnkßch: