ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
MySQL (46) - Triggery"Po mém zásahu zůstane v databázi spoušť" aneb co jsou to triggery. Další žádanou vymožeností, která přibyla do verze 5 databázového
stroje MySQL jsou triggery. Dnes se podíváme na to, co to přesně
triggery jsou a k čemu jsou v databázovém světě dobré. Bude to spíše
teoretické povídání s tím, že věci specifické pro MySQL budou
soustředěny do následujícího článku. TriggeryPředevším - existuje krásné české slovo, jímž se dá přeložit
anglické trigger - a to je spoušť. Moc se ale neujalo. Možná
proto, že zní tak nepořádně. Představte si třeba větu "po mojí úpravě
kódu zůstala v databázi pěkná spoušť". Protože tohle by asi většina
uživatelů slyšet nechtěla, budu používat spíš původní, anglické slovo
trigger. Suchá definice pak praví, že trigger je uložená procedura, která se
spouští v souvislosti s provedením nějakého akčního dotazu na tabulce.
Pokud tuto definici trochu rozpitváme, dostaneme z ní následující
informace:
Čím se liší od uložených procedurTriggery mají sice stejnou syntaxi jako uložené procedury, přesto se
od nich v lecčems liší. Tak především triggerům není možné předávat
žádné vstupní parametry. To znamená, že trigger nemá žádné informace o
tom, jak by měl být prováděn, které by se daly "zvenčí" přepínat za
chodu. Triggery navíc narozdíl od uložených procedur nemohou vracet
sadu záznamů. A navíc, databázové systémy mívají některá omezení a
příkazy, které se v triggerech nesmějí objevit. Pro MySQL platí, že se
v triggeru nesmí objevit přinejmenším tyto příkazy:
Na druhou stranu mají triggery oproti uloženým procedurám něco
navíc; mají totiž "vevnitř" přístup k datům, která se právě mění. To
například znamená, že trigger, který se spouští před aktualizací nějaké
tabulky má přístup k hodnotám těch řádků, které se snažíme změnit. Také
to znamená, že v triggeru můžete provést nějaké rozhodnutí v závislosti
na datech, která má tento trigger změnit. Jak se používajíTriggery se v tabulkách používají z několika důvodů. Ty mohou
souviset s konzistencí dat, s jejich správou a údržbou nebo s tím, jak
a kdy bude databáze komunikovat se svým okolím. Abyste měli určitou
představu, nastíním některé typičtější scénáře:
Typický scénář použití triggerů je tedy takový:
Aplikační logika v databáziPoněkud kontroverzním tématem je použití triggerů jako centrálního
bodu pro vytvoření či správu aplikační logiky. Zastánci tohoto přístupu
tvrdí, že pomocí triggerů se v dnešní době ná naprogramovat prakticky
cokoliv a výsledek pak mohou používat všechny aplikace sdílející danou
databázi; odpůrci zase tvrdí, že databáze by měla sloužit jako úložiště
dat a pro správu aplikační logiky by měly sloužit aplikační servery. Jak už to bývá, pravda je někde uprostřed. O tom, kolik toho budou
zajišťovat triggery budete muset nakonec rozhodnout ve svých aplikacích
sami. Na co dát pozorPřestože triggery jsou ve spoustě situací velmi přínosné, měli byste vědět, že jsou s nimi spojena určitá úskalí. Především - každý trigger zabere nějakou dobu. Pokud budete mít triggerů více a/nebo pokud budou provádět časově dlouhé operace, můžete si snížit dobu odezvy databáze na akční dotazy. Rovněž triggery se obtížně ladí. Klasický akční dotaz změní data a skončí; trigger může data modifikovat, uložit jinam nebo operaci zakázat. Díky tomu bývá občas velmi obtížné zjistit, co se vlastně v databázi děje - a to je tím palčivější, čím více triggerů máte a čím složitější akce provádějí.
Související články
Předchozí Celou kategorii (seriál) Další
MySQL (1) - pestrý svět databází
MySQL (2) - Instalujeme databázi MySQL MYSQL (3) Instalujeme MySQL podruhé MySQL (4) - něco terminologie MySQL (5) - tajuplné SQL MySQL (6) - Ukládáme řetězce MySQL (7) - hrátky s čísly MySQL (8) - Ukládání datumů MySQL (9) - Další datové typy MySQL (10) - tvorba databáze. Základy DDL MySQL (11) - vytváříme tabulky MySQL (12) - tipy k tvorbě tabulek MySQL (13) - Vkládáme data MySQL (14) - Upravujeme data MySQL (15) - Odstraňujeme data MySQL (16) - Tipy a triky k manipulaci s daty MySQL (17) - vybíráme data MySQL (18) - Filtrujeme data MySQL (19) - Řadíme data MySQL (20) - spojení více tabulek MySQL (21) - klauzule JOIN MySQL (22) - tipy a triky ke spojování tabulek MySQL (23) - relace 1:N a N:N MySQL (24) - Seskupujeme záznamy MySQL (25) - hrátky se seskupenými záznamy MySQL (26) - Poddotazy MySQL (27) - Složitější dotazy MySQL (28) - Dotazy pro pokročilé MySQL (29) - Vracení nejvyšších záznamů MySQL (30) - průběžné součty MySQL (31) - Indexy MySQL (32) - ještě k indexům MySQL (33) - Příkaz UNION MySQL (34) - větvení kódu a pivotní tabulky MySQL (35) - vestavěné funkce MySQL (36) - Regulární výrazy MySQL (37) - použití fulltextového vyhledávání MySQL (38) - Fulltext a praxe MySQL (39) - typy tabulek v MySQL MySQL (40) - další typy tabulek MySQL (41) - Transakce MySQL (42) - ještě k transakcím MySQL (43) - Uložené procedury MySQL (44) - parametry uložených procedur MySQL (45) - větvení kódu uložených procedur MySQL (47) - Triggery a praxe MySQL (48) - UDF MySQL (49) - pohledy MySQL (50) - Pohledy podruhé MySQL (51) - Metadata MySQL (52) - A co zálohování? MySQL (53) - SELECT INTO OUTFILE MySQL (54) - zálohování MySQL z webu MySQL (55) - zálohování MySQL z pohledu správce MySQL (56) - Obnova zálohovaných dat MySQL (57) - Ach, ta čeština MySQL (58) - čeština v praxi MySQL (59) - české řazení MySQL (60) - řádkový klient MySQL (61) - Oprávnění MySQL (62) - Oprávnění podruhé MySQL (63) - jemné nastavení práv MySQL (64) - nad dotazy čtenářů MySQL (65) - Ladíme server MySQL (66) - Ještě k ladění serveru MySQL - (67) MySQL (68) - Závěr MySQL (69) - Prepared Statements Předchozí Celou kategorii (seriál) Další
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |