Metody databáze (pohledy, uložené procedury, triggery)
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
Uložené procedury jsou obecně schopné běžet rychleji, než kdyby se měl příslušný kód vykonávat
z klientské aplikace. Důvodem je fakt, že uložené procedury jsou na serveru zkompilovány1.
1
zkompilováním je myšleno, že si server pro uloženou proceduru vytvoří a spravuje tzv. prováděcí plán, díky
kterému je subsystém serveru zvaný optimalizátor obvykle schopen najít nejrychlejší způsob, jak uloženou
proceduru provést a potom tento způsob opakovaně používat při jednotlivých voláních této uložené procedury
PAD Programování a databáze
Téma 19
Školní rok 2017/2018
2/2
Jan Švábík, V4D
Vytvoření a volání procedury
Procedura pro vrácení veškerého uloženého softwaru. Níže je pak zavolána.
CREATE PROCEDURE vratSoftware()
BEGIN
SELECT * FROM software;
END //
CALL vratSoftware();
Procedura pro vrácení konkrétního záznamu (např. podle kódu produktu). Níze je pak zavolána.
CREATE PROCEDURE vratProdukt(IN kodProduktu CHAR(8))
BEGIN
SELECT * FROM produkty WHERE kod = kodProduktu;
END //
CALL vratProdukt("ABC12345");
Triggery
Trigger je pak nějaká uložená procedura, která se spouští automaticky v souvislosti s provedením
nějakého akčního dotazu v tabulce (každý trigger patří právě jedné tabulce). Dále se od uložených
procedur liší nemožností předávat nějaké vstupní parametry nebo něco vracet.
V triggeru se nesmí objevit následující příkazy: ALTER, START TRANSACTION, ROLLBACK, COMMIT,
GRANT
, REVOKE, CALL a některé další.
Výhodou však je, že triggery mají přístup k datům, která se právě mění. Tzn. Trigger, který se
spouští před aktualizací nějaké tabulky, má přístup k hodnotám těch řádků, které mají být
změněny. Před úpravou nějakého záznamu je tak například možné automaticky uložit původní
záznam do tabulky archiv.