sql >> Databáze >  >> RDS >> Database

Spouštěč v SQL

V tomto článku se na příkladu seznámíme s konceptem triggeru v SQL a jeho implementací.

Spouštěč ve strukturovaném dotazovacím jazyce je sada procedurálních příkazů prováděných automaticky, když existuje jakákoli zpětná vazba k určitým událostem v tabulce v databázi. Spouštěče se používají k ochraně integrity dat v databázi.

Podívejme se na následující situaci, abychom pochopili koncept triggeru v SQL:

Předpokládejme, že Supriya je manažerem informačních technologií v nadnárodní společnosti. Když je záznam nového zaměstnance vložen do databáze, musí každému novému zaměstnanci poslat zprávu „Gratulujeme“. Pokud je pět nebo šest zaměstnanců, Supriya to může udělat ručně, ale pokud je počet nových zaměstnanců větší než tisíc, pak v takovém stavu musí použít spoušť v databázi.

Supriya tedy musí v tabulce vytvořit spouštěč, který automaticky odešle zprávu „Gratulujeme“ novým zaměstnancům, jakmile bude jejich záznam vložen do databáze.

Spouštěč se vždy provede s konkrétní tabulkou v databázi. Pokud tabulku odstraníme, automaticky se odstraní i všechny spouštěče přidružené k této tabulce.

Spouštěče ve strukturovaném dotazovacím jazyce jsou volány pouze předtím, než k událostem došlo, nebo až k nim došlo.

Pouze tři události nastanou ve spouštěči před událostmi nebo po nich, a to události Insert, Události Update nebo Delete.

1. VLOŽTE událost :Událost Insert nastane vždy, když je do tabulky vložen nový záznam.

2. AKTUALIZOVAT událost :Událost aktualizace nastane při každé aktualizaci existujících záznamů v tabulce.

3. SMAZAT událost: K události Delete dojde při každém odstranění záznamu z tabulky.

Typy spouštěčů ve strukturovaném dotazovacím jazyce

Následuje šest typů spouštěčů používaných ve strukturovaném dotazovacím jazyce:

1. PO VLOŽENÍ Spouštěče:

Spouštěč po vložení se v SQL vyvolá po vložení záznamů do tabulky.

2. PO AKTUALIZACI Spouštěče:

Spouštěč po aktualizaci se v SQL vyvolá po aktualizaci existujících záznamů v tabulce.

3. PO VYMAZÁNÍ Spouštěč:

Aktivační událost after delete je v SQL vyvolána po odstranění záznamu z tabulky.

4. PŘED VLOŽENÍM Spouštěče:

Spouštěč před vložením se v SQL vyvolá před vložením záznamů do tabulky.

5. PŘED AKTUALIZACÍ Spouštěče:

Aktivační událost před aktualizací je v SQL vyvolána před aktualizací existujících záznamů v tabulce.

6. PŘED SMAZÁNÍM Spouštěč:

Aktivační událost před odstraněním se v SQL vyvolá před odstraněním záznamu z tabulky.

Syntaxe spouštěče v SQL:

CREATE TRIGGER Trigger_Name  

[BEFORE | AFTER]  [Insert | Update | Delete] 

ON [Table_Name] 

[FOR EACH ROW | FOR EACH COLUMN] 

AS 

Set of SQL Statement
  • V syntaxi spouštěče musíme definovat název spouštěče hned za klíčovým slovem CREATE TRIGGER v syntaxi.
  • Za názvem spouštěče musíme definovat, který spouštěč chceme vyvolat, klíčové slovo spouštěče před nebo po spouštěči s názvem události.
  • Pak musíme zmínit název tabulky, u které došlo ke spuštění.
  • Za názvem tabulky musíme definovat spouštěč na úrovni řádku nebo sloupce.
  • A nakonec musíme napsat příkaz SQL, který se bude chovat podle událostí.

Příklad spouštěče v SQL

Abychom porozuměli konceptu triggeru v SQL, musíme vytvořit tabulku, na které má být trigger spuštěn.

Následující dotaz vytvoří tabulku Student v databázi SQL.

CREATE TABLE Student(

Student_rollno INT NOT NULL PRIMARY KEY,

FirstName varchar(40),

English_Marks INT,

Physics_Marks INT,

Chemistry_Marks INT,

Biology_Marks INT,

Maths_Marks INT,

Total_Marks INT,

Percentage INT);

Následující dotaz ukazuje strukturu tabulky Student:

DESC Student;

Pole Typ NULL Klíč Výchozí Navíc
Student_RollNo INT NE PRI NULL
Jméno Varchar(40) ANO NULL
English_Marks INT ANO NULL
Fyzikální_značky INT ANO NULL
Chemistry_Marks INT ANO NULL
Biology_Marks INT ANO NULL
Maths_Marks INT ANO NULL
Total_Marks INT ANO NULL
Procento INT ANO NULL

Následující dotaz spustí spouštěč před vložením záznamu studenta do tabulky:

CREATE TRIGGER Student _Marks  

BEFORE INSERT 

ON 

Student 

FOR EACH ROW 

SET new.Total_Marks = new.English_Marks + new.Physics_Marks + new.Chemistry_Marks + new.Biology_Marks + new.Maths_Marks,   

new.Percentage = ( new.Total_Marks / 500) * 100;

Následující dotazy vloží záznam do tabulky Student.

INSERT INTO Student (Student_RollNo, First_Name, English_Marks, Physics_Marks, Chemistry_Marks,Biology_Marks, Maths_Marks, Total_Marks, Percentage) VALUES ( 1, ‘Raman’, 90, 80, 75, 70 ,92, 0, 0);  

Chcete-li zkontrolovat výstup výše uvedeného příkazu INSERT, musíte zadat následující příkaz SELECT:

SELECT * FROM Student

Výstup:

Student_RollNo Jméno Anglické_značky Fyzikální_značky Chemistry_Marks Biologické_značky Maths_Marks Total_Marks Procento
1 Raman 90 80 75 70 92 407 81

Výhody spouštěčů v SQL

Níže jsou uvedeny tři hlavní výhody spouštěčů ve strukturovaném dotazovacím jazyce:

  1. SQL poskytuje alternativní způsob, jak udržovat data a referenční integritu v tabulkách.
  2. Spouštěče pomáhají při automatickém provádění naplánovaných úloh.
  3. Zachycují chyby v databázové vrstvě různých podniků.
  4. Umožňují uživatelům databáze ověřit hodnoty před vložením a aktualizací.

Nevýhody spouštěčů v SQL

Níže jsou uvedeny hlavní nevýhody spouštěčů ve strukturovaném dotazovacím jazyce:

  1. Nejsou zkompilované.
  2. Není možné najít a ladit chyby ve spouštěčích.
  3. Pokud ve spouštěči použijeme složitý kód, zpomalí to běh aplikace.
  4. Trigger zvyšuje vysoké zatížení databázového systému.


  1. Jak deklarovat proměnnou a používat ji ve stejném skriptu Oracle SQL?

  2. Jak definovat trigger ON COMMIT v Oracle?

  3. Práce s událostmi v Oracle Cloud Infrastructure Část 1:Základy služeb

  4. Včetně tabulek a schémat při výpisu sloupců identity v databázi SQL Server