Přednáška 9 Triggery.

Slides:



Advertisements
Podobné prezentace
Databázové systémy Zabezpečení DBS. Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: •Důvěrnost - informace by.
Advertisements

Aplikační a programové vybavení
Databázové systémy 2 Cvičení č. 8
Základy jazyka SQL Jan Tichava
Ladislav Hofman, Jan Slavík TUL Předmět databázové systémy
Zpracování SQL Lubomír Andrle 5. přednáška
A5M33IZS – Informační a znalostní systémy Dotazovací jazyk SQL - I.
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
LOV, Listbox, Poplist a Combobox v Oracle Forms LOV – seznam hodnot, které se zobrazí po stisku klávesy Enter v textovém poli. LOV – seznam hodnot, které.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
YDASYS1 Ing. Monika Šimková.
Fakulta elektrotechniky a informatiky
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Informatika pro ekonomy II přednáška 11
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta elektrotechniky a informatiky
Temporální databáze a TSQL
Radek Špinka Přepínače MSSQL výběr.
PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL.
Hromadná korespondence
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databázové systémy Štěpán Šípal.
Databáze Úvod.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
PHP – Základy programování
Vypracoval: Ondřej Dvorský Třída: VIII.A
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
JavaScript Podmínky, cykly a pole.
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Objektový přístup v databázích Objektová identita (místo primárních klíčů) –Reference (místo cizích klíčů) Objektový přístup k návrhu – objekty stejného.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
Databázové systémy I Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy I Cvičení č. 7 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Aplikační a programové vybavení
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Základní obeznámení s jazykem SQL Databázové systémy.
Databázové systémy SQL Výběr dat.
Databázové systémy Zabezpečení DBS. Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: Důvěrnost - informace by neměly.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B15 Autor Ing. Jiří Kalousek Období vytvoření březen.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Zabezpečení DB. Při práci s webovou aplikací je potřeba zvážit tři hlavní aspekty zabezpečení: 1. Způsob uložení dat na serveru – je nutné chránit především.
1 Syntaxe a sémantika aktivních databází Databázové triggery Aktivní pravidla 10. listopadu 2004 Zuzana Reitermanová & Vojtěch Hlaveš.
Úvod do databází zkrácená verze.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Databázové systémy přednáška 8 – Transakce
Roman Danel Institut ekonomiky a systémů řízení 2016
Dotazovací jazyk SQL - III
Databázové systémy a SQL
Šablona 32 VY_32_INOVACE_038.ICT.34
Bloky – tvorba a vkládání
Databázové systémy a SQL
Přednáška 7 SQL – JOIN.
Přednáška 10 Uložené procedury.
Databázové systémy a SQL
Transkript prezentace:

Přednáška 9 Triggery

Triggery Pojmenovaný databázový objekt, vždy spojený s jednou tabulkou. Řadí se mezi uložené procedury spouštěné z MySQL. Triggery nejsou spouštěny přímo, ale na základě akce prováděné na přidružené tabulce. Triggery tak slouží pro automatické volání příkazů SQL nebo uložených procedur. Podle akce, která trigger implicitně spouští je dělíme na: Trigger vkládání. Trigger aktualizace. Trigger odstraňování.

Triggery Trigger je tedy definován v závislosti na své úloze spustit se při provedení příkazu INSERT, UPDATE nebo DELETE na přidružené tabulce. Trigger může být definován na spuštění buď před (BEFORE), nebo po (AFTER) provedení jednoho z výše uvedených příkazů. Například, trigger bude aktivován před vložením každého řádku na přidružené tabulce nebo po aktualizaci tohoto řádku. Každá tabulka může mít vždy pouze jeden trigger pro kombinaci události spuštění a doby spuštění.

Vytvoření triggeru Základní syntaxe CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_body Trigger_name = vámi zvolené jméno triggeru Trigger_time = BEFORE nebo AFTER Trigger_event = INSERT, UPDATE nebo DELETE Tbl_name = název přidružené tabulky Trigger_body = blok příkazů těla triggeru

Trigger vkládání Tento trigger čeká na jakýkoliv příkaz INSERT, který chce vložit data do přidružené tabulky. Jakmile k tomu dojde, trigger provede příkazy, které má definovány ve svém těle. Příklad: CREATE TRIGGER after_insert_knihy AFTER INSERT ON knihy FOR EACH ROW BEGIN INSERT INTO stav VALUES(NEW.id, 0); END; Viz studijní opora Trigger je vhodné pojmenovat podle jeho funkce. Bude-li v těle triggeru více příkazů, je potřeba je uzavřít do bloku BEGIN/END. V těle triggeru můžeme přistupovat k hodnotám sloupců přidružené tabulky, jež byly měněny příkazem. NEW – nové hodnoty, OLD – staré hodnoty

Trigger vkládání Činnost triggeru: Akce triggeru Trigger je přidružen k tabulce knihy. Čeká až na této tabulce bude proveden příkaz INSERT. INSERT INTO knihy (id, id_autor, nazev, isbn) VALUES (NULL*, 1, 'Vánoce Hercula Poirota', '978-80-242-2255-4'); Akce triggeru Trigger příkaz INSERT zaznamená, přebere hodnotu nového id knihy NEW.id a po vložení dat do tabulky knihy vykoná příkaz definovaný ve svém těle. Otázka: Proč byl trigger definován jako AFTER a ne BEFORE? * V případě, že na poli PK je definována možnost Auto_Increment, nahradím hodnotu slovem NULL, MySQL doplní hodnotu PK samo

Trigger aktualizace Tento trigger čeká na jakýkoliv příkaz UPDATE, který chce editovat data v přidružené tabulce. Jakmile k tomu dojde, trigger provede příkazy, které má definovány ve svém těle. Úloha č. 1: Využijeme nyní doplňkový materiál k této přednášce, který obsahuje vám již známé tabulky. Vaším úkolem je vytvořit trigger, který při úpravě dat v tabulce motory, zkopíruje (vloží) původní data do tabulky motory_zaloha.

Řešení CREATE TRIGGER zalohuj_verzi_motoru BEFORE UPDATE ON motory FOR EACH ROW BEGIN INSERT INTO motory_zaloha VALUES(NULL, OLD.motor_id, OLD.typ, OLD.obsah, NOW()); END; Jelikož potřebujeme uložit původní data o motoru, musí být trigger spuštěn ještě před editací záznamu (BEFORE) a na původní hodnoty se můžeme odkázat aliasy OLD.

Trigger odstraňování Tento trigger čeká na jakýkoliv příkaz DELETE, který chce odstranit data v přidružené tabulce. Jakmile k tomu dojde, trigger provede příkazy, které má definovány ve svém těle. Úloha č. 2: Vaším úkolem je vytvořit trigger, který při odstranění automobilky, odstraní související data v tabulce auta a auto_motor.

Řešení CREATE TRIGGER odstran_referencni_data BEFORE DELETE ON automobilky FOR EACH ROW BEGIN DELETE FROM auto_motor WHERE au_id IN (SELECT au_id FROM auta WHERE auta.am_id = OLD.am_id); DELETE FROM auta WHERE am_id = OLD.am_id; END; Trigger je spuštěn jako BEFORE. Nejprve musíme odstranit data z tabulky auto_motor, protože potřebujeme id aut, kterých se to týká. Použili jsme pro to vnořený dotaz, kterým jsme id aut získali. V druhém kroku jsme odstranili i samotné vozy v tabulce auta. Pořadí musí být dodrženo, protože pokud bychom dříve odstranili auta, neměli bychom k dispozici jejich id pro odstranění v auto_motor. Vnořený dotaz

Použití a specifika triggerů Kontrola referenční integrity Přenesení zátěže na server (výhoda i nevýhoda zároveň) Triggery by neměly být poslední linie obrany v ověřování dat. Na webhostinzích bývají většinou zakázané . Nepodporují transakce. V jejich těle se mohou používat součástí PL/SQL (proměnné, podmínky, cykly, …) Trigger nevrací žádnou hodnotu, jako např. UP funkce.

Samostatně Procvičte si: Vytvořte POHLED, který bude vracet všechny automobily s benzínovými motory. Vytvořte TRIGGER, který při odstranění vozu z tabulky auta, odstraní záznam o tomto vozu z vazební tabulky auto_motor.

Zapamatujte si Co je to Trigger Typy Triggerů v MySQL Vazba na přidruženou tabulku Doba spuštění triggeru Aliasy OLD a NEW. Specifika použití triggerů.