Spouštěč je uložená procedura v databázi, která se automaticky vyvolá vždy, když v databázi nastane speciální událost. Spouštěč lze například vyvolat, když je řádek vložen do zadané tabulky nebo když jsou aktualizovány konkrétní sloupce tabulky. Jednoduše řečeno, spoušť je sbírka SQL příkazy s konkrétními názvy, které jsou uloženy v systémové paměti. Patří do specifické třídy uložených procedur, které se automaticky vyvolávají v reakci na události databázového serveru. Ke každému spouštěči je připojena tabulka.
Protože spouštěč nelze na rozdíl od uložené procedury volat přímo, označuje se jako speciální procedura. Spouštěč je automaticky volán vždy, když dojde k události změny dat v tabulce, což je hlavní rozdíl mezi spouštěčem a procedurou. Na druhou stranu uložená procedura musí být volána přímo.
Níže jsou uvedeny klíčové rozdíly mezi spouštěči a uloženými procedurami:
- Spouštěče nelze ručně vyvolat ani spustit.
- Není šance, že spouštěče obdrží parametry.
- Transakci nelze potvrdit nebo vrátit zpět uvnitř spouštěče.
Syntax:
vytvořit spouštěč [trigger_name]
[před | po]
vložit
na [název_tabulky]
[pro každý řádek]
[trigger_body]
Vysvětlení syntaxe
- Create trigger [trigger_name]: Vytvoří nebo nahradí existující trigger s trigger_name.
- [před | after]: Určuje, kdy bude spouštěč spuštěn.
- insert : Určuje operaci DML.
- On [název_tabulky]: Určuje název tabulky spojené se spouštěčem.
- [pro každý řádek]: Toto určuje spouštěč na úrovni řádku, tj. spouštěč bude proveden pro každý dotčený řádek.
- [trigger_body]: Toto poskytuje operaci, která se má provést při spuštění spouštěče
Proč používáme spouštěče?
Když potřebujeme provést některé akce automaticky v určitých žádoucích scénářích, budou užitečné spouštěče. Například si musíme být vědomi frekvence a načasování změn v tabulce, která se neustále mění. V takových případech bychom mohli vytvořit spouštěč pro vložení požadovaných dat do jiné tabulky, pokud by primární tabulka prošla nějakými změnami.
Různé typy spouštěčů v SQL Server
Existují dvě kategorie spouštěčů:
- Spouštěč DDL
- Spouštěč DML
- Spouštěče přihlášení
Spouštěče DDL
Události příkazu jazyka DDL (Data Definition Language), jako je Create_table, Create_view, drop_table, Drop_view a Alter_table, způsobují aktivaci spouštěčů DDL.
SQL Server
create trigger safety on database for create_table,alter_table,drop_table as print 'you can not create,drop and alter tab>
Výstup:
Spouštěče DML
Data používají události příkazu DML (manipulation Language), které začínají příkazy Vložit, Aktualizovat a Odstranit, čímž se aktivují spouštěče DML. odpovídající insert_table, update_view a delete_table.
SQL Server
create trigger deep on emp for insert,update ,delete as print 'you can not insert,update and delete this table i' rollback;>
Výstup:
Spouštěče přihlášení
přihlášení aktivační události jsou požáry v reakci na událost LOGON. Když je vytvořena uživatelská relace s instancí SQL Server po dokončení procesu ověřování protokolování, ale před vytvořením uživatelské relace, dojde k události LOGON. V důsledku toho budou zprávy příkazu PRINT a všechny chyby generované spouštěčem viditelné v protokolu chyb serveru SQL Server. Chyby ověřování brání použití spouštěčů přihlášení. Tyto spouštěče lze použít ke sledování aktivity přihlášení nebo k nastavení limitu počtu relací, které může mít dané přihlášení za účelem auditu a správy relací serveru.
Jak SQL Server zobrazuje Trigger?
Spouštěč show or list je užitečný, když máme mnoho databází s mnoha tabulkami. Tento dotaz je velmi užitečný, když jsou názvy tabulek stejné ve více databázích. Pomocí níže uvedeného příkazu můžeme zobrazit seznam všech spouštěčů dostupných na serveru SQL:
Syntax:
FROM sys.triggers, název SELECT, is_instead_of_trigger
IF typ = „TR“;
SQL Server Management Studio velmi usnadňuje zobrazení nebo výpis všech spouštěčů, které jsou k dispozici pro danou tabulku. K tomu nám pomohou následující kroky:
Přejít na Databáze vyberte požadovanou databázi a poté ji rozbalte.
- Vybrat Tabulky nabídku a rozbalte ji.
- Vyberte libovolnou konkrétní tabulku a rozbalte ji.
Najdeme zde různé možnosti. Když si vybereme Spouštěče zobrazí všechny spouštěče dostupné v této tabulce.
Spuštění PŘED a PO
PŘED spouštěči spusťte akci spouštěče před spuštěním spouštěcího příkazu. PO spouštěčích spusťte akci spouštěče po spuštění spouštěcího příkazu.
Příklad
Daná databáze studentských zpráv, do které se zaznamenává hodnocení studentů. V takovém schématu vytvořte spouštěč, aby se součet a procento zadaných značek automaticky vložily při každém vložení záznamu.
Zde se spustí trigger před vložením záznamu, takže lze použít BEFORE Tag.
Předpokládejme schéma databáze
Dotaz
mysql>>desc Student;>
SQL Spouštěč příkazu problému.
Nad SQL příkazem vytvoří v databázi studentů spouštěč, do kterého vždy, když jsou zadány známky předmětů, před vložením těchto dat do databáze spouštěč spočítá tyto dvě hodnoty a vloží je se zadanými hodnotami. tj.
Výstup
Tímto způsobem lze v databázích vytvářet a spouštět spouštěče.
Výhoda spouštěčů
Mezi výhody použití spouštěčů na serveru SQL Server patří následující:
- Pravidla databázových objektů jsou stanovena spouštěči, které způsobí, že změny budou vráceny zpět, pokud nejsou splněny.
- Spouštěč prozkoumá data a v případě potřeby provede změny.
- Integritu dat můžeme prosadit díky triggerům.
- Data jsou před vložením nebo aktualizací ověřena pomocí spouštěčů.
- Spouštěče nám pomáhají udržovat protokol záznamů.
- Vzhledem k tomu, že spouštěče nemusí být kompilovány při každém spuštění, zlepšují výkon SQL dotazů.
- Kód na straně klienta je redukován o spouštěče, což šetří čas a práci.
- Údržba spouště je jednoduchá.
Nevýhoda spouštěčů
Nevýhody použití spouštěčů na serveru SQL Server zahrnují následující:
- Pouze spouštěče umožňují použití rozšířených validací.
- Používají se automatické spouštěče a uživatel neví, kdy jsou spouštěny. V důsledku toho je obtížné odstraňovat problémy, které vznikají v databázové vrstvě.
- V důsledku spouštěčů se může zvýšit režie databázového serveru.
- V jediném příkazu CREATE TRIGGER můžeme zadat stejnou spouštěcí akci pro více uživatelských akcí, jako je INSERT a UPDATE.
- Pro vytváření spouštěčů je k dispozici pouze aktuální databáze, ale stále mohou vytvářet odkazy na objekty mimo databázi.
Často kladené otázky
Q1: Co je spouštěč SQL?
Odpovědět:
Spouštěč SQL je databázový objekt, který je přidružen k tabulce a automaticky provádí sadu příkazů SQL, když v této tabulce nastane určitá událost. Spouštěče se používají k vynucení obchodních pravidel, udržování integrity dat a automatizaci určitých akcí v rámci databáze. Mohou být spouštěny různými událostmi, jako je vkládání, aktualizace nebo mazání dat v tabulce, a umožňují provádět další operace na základě těchto událostí.
Q2: Jak fungují spouštěče SQL?
Odpovědět:
avl strom
Spouštěče SQL jsou definovány pomocí příkazů SQL a jsou spojeny s konkrétní tabulkou. Když se na této tabulce vyskytne definovaná spouštěcí událost (např. INSERT, UPDATE, DELETE), příslušný spouštěcí kód se provede automaticky. Spouštěcí kód se může skládat z příkazů SQL, které mohou manipulovat s daty ve stejných nebo jiných tabulkách, vynucovat omezení nebo provádět jiné akce. Spouštěče se spouštějí v rámci rozsahu transakce a lze je definovat tak, aby se spouštěly před nebo po spouštěcí události.
Q3: Jaké jsou výhody použití spouštěčů SQL?
Odpovědět:
Mezi výhody použití spouštěčů SQL patří:
Integrita dat: Spouštěče vám umožňují vynutit komplexní obchodní pravidla a omezení na úrovni databáze a zajistit, že data zůstanou konzistentní a přesná.
Automatizace: Spouštěče mohou automatizovat opakující se nebo složité úlohy provedením předem definovaných akcí, kdykoli dojde k určité události. To snižuje potřebu ručního zásahu a zvyšuje efektivitu.
Auditní záznamy: Spouštěče lze použít ke sledování změn provedených v datech, jako je protokolování změn do samostatné auditní tabulky. To pomáhá při auditování a udržování historie změn dat.
Ověření dat: Spouštěče mohou provádět další ověřovací kontroly dat před jejich vložením, aktualizací nebo odstraněním, čímž zajistí, že v databázi budou uložena pouze platná a vyhovující data.