logo

SQL-trigger | Studentendatabase

Een trigger is een opgeslagen procedure in een database die automatisch wordt geactiveerd wanneer er een speciale gebeurtenis in de database plaatsvindt. Een trigger kan bijvoorbeeld worden geactiveerd wanneer een rij in een opgegeven tabel wordt ingevoegd of wanneer specifieke tabelkolommen worden bijgewerkt. Simpel gezegd: een trigger is een verzameling van SQL -instructies met bepaalde namen die in het systeemgeheugen zijn opgeslagen. Het behoort tot een specifieke klasse van opgeslagen procedures die automatisch worden aangeroepen als reactie op databaseservergebeurtenissen. Aan elke trigger is een tabel gekoppeld.

Omdat een trigger, in tegenstelling tot een opgeslagen procedure, niet rechtstreeks kan worden aangeroepen, wordt deze een speciale procedure genoemd. Er wordt automatisch een trigger aangeroepen wanneer er een gegevenswijzigingsgebeurtenis tegen een tabel plaatsvindt, wat het belangrijkste onderscheid is tussen een trigger en een procedure. Aan de andere kant moet een opgeslagen procedure rechtstreeks worden aangeroepen.



Hieronder volgen de belangrijkste verschillen tussen triggers en opgeslagen procedures:

  1. Triggers kunnen niet handmatig worden aangeroepen of uitgevoerd.
  2. Er is geen kans dat triggers parameters ontvangen.
  3. Een transactie kan binnen een trigger niet worden vastgelegd of teruggedraaid.

Syntaxis:

maak trigger [trigger_name]



[voor | na]

invoegen

op [tabelnaam]



[voor elke rij]

[triggerlichaam]

Uitleg van de syntaxis

  1. Trigger maken [triggernaam]: Creëert of vervangt een bestaande trigger door de triggernaam.
  2. [voor | after]: Dit specificeert wanneer de trigger wordt uitgevoerd.
  3. insert : Dit specificeert de DML-bewerking.
  4. Op [tabelnaam]: dit specificeert de naam van de tabel die aan de trigger is gekoppeld.
  5. [voor elke rij]: dit specificeert een trigger op rijniveau, dat wil zeggen dat de trigger wordt uitgevoerd voor elke betreffende rij.
  6. [trigger_body]: Dit levert de bewerking op die moet worden uitgevoerd wanneer de trigger wordt geactiveerd

Waarom gebruiken we triggers?

Wanneer we bepaalde acties automatisch moeten uitvoeren in bepaalde wenselijke scenario's, kunnen triggers nuttig zijn. We moeten ons bijvoorbeeld bewust zijn van de frequentie en timing van wijzigingen in een tabel die voortdurend verandert. In dergelijke gevallen kunnen we een trigger creëren om de vereiste gegevens in een andere tabel in te voegen als de primaire tabel wijzigingen heeft ondergaan.

Verschillende triggertypen in SQL Server

Er bestaan ​​twee categorieën triggers:

  1. DDL-trigger
  2. DML-trigger
  3. Aanmeldingstriggers

DDL-triggers

De Data Definition Language (DDL)-opdrachtgebeurtenissen zoals Create_table, Create_view, drop_table, Drop_view en Alter_table zorgen ervoor dat de DDL-triggers worden geactiveerd.

SQL-server

  create trigger safety    on database  for   create_table,alter_table,drop_table  as   print 'you can not create,drop and alter tab>

Uitgang:

DML-triggers

De gegevens gebruiken manipulatietaal (DML)-opdrachtgebeurtenissen die beginnen met Invoegen, Bijwerken en Verwijderen, waardoor de DML-triggers worden geactiveerd. overeenkomend met insert_table, update_view en 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;>

Uitgang:

Aanmeldingstriggers

aanmeldingstriggers zijn branden als reactie op een LOGON-gebeurtenis. Wanneer een gebruikerssessie wordt gemaakt met een SQL Server-exemplaar nadat het authenticatieproces van het loggen is voltooid, maar voordat een gebruikerssessie tot stand wordt gebracht, vindt de gebeurtenis LOGON plaats. Als gevolg hiervan zijn de PRINT-instructieberichten en eventuele fouten die door de trigger worden gegenereerd allemaal zichtbaar in het foutenlogboek van SQL Server. Verificatiefouten voorkomen dat aanmeldingstriggers worden gebruikt. Deze triggers kunnen worden gebruikt om inlogactiviteiten bij te houden of een limiet in te stellen voor het aantal sessies dat een bepaalde login kan hebben om serversessies te controleren en te beheren.

Hoe toont SQL Server Trigger?

De show- of list-trigger is handig als we veel databases met veel tabellen hebben. Deze query is erg handig als de tabelnamen in meerdere databases hetzelfde zijn. We kunnen een lijst bekijken van elke trigger die beschikbaar is in de SQL Server door de onderstaande opdracht te gebruiken:

voor stringarray java

Syntaxis:

VAN sys.triggers, SELECTEER naam, is_in plaats van_trigger
ALS-type = ‘TR’;

De SQL Server Management Studio maakt het heel eenvoudig om alle triggers weer te geven of weer te geven die beschikbaar zijn voor een bepaalde tabel. De volgende stappen zullen ons helpen dit te bereiken:

Ga naar de Databases menu, selecteer de gewenste database en vouw deze vervolgens uit.

  • Selecteer de Tafels menu en vouw het uit.
  • Selecteer een specifieke tabel en vouw deze uit.

We krijgen hier verschillende opties. Wanneer we kiezen voor de Triggers optie, worden alle triggers weergegeven die beschikbaar zijn in deze tabel.

VOOR en NA Trigger

BEFORE triggers voeren de triggeractie uit voordat de triggeringinstructie wordt uitgevoerd. AFTER triggers voert de triggeractie uit nadat de triggeringinstructie is uitgevoerd.

Voorbeeld
Gegeven Student Report Database, waarin de beoordeling van studentencijfers wordt vastgelegd. Maak in zo'n schema een trigger zodat het totaal en percentage van de opgegeven cijfers automatisch worden ingevoegd wanneer een record wordt ingevoegd.

Hier wordt een trigger geactiveerd voordat de record wordt ingevoegd, zodat BEFORE Tag kan worden gebruikt.

Veronderstel het databaseschema

Vraag

mysql>>desc Student;>

SQL Trigger voor de probleemstelling.

afbeelding2

Bovenstaande SQL-instructie creëert een trigger in de studentendatabase waarin telkens wanneer onderwerpen worden ingevoerd, voordat deze gegevens in de database worden ingevoegd, de trigger deze twee waarden berekent en deze invoegt met de ingevoerde waarden. d.w.z.

Uitvoer

afbeelding3

Op deze manier kunnen triggers worden aangemaakt en uitgevoerd in de databases.

Voordeel van triggers

De voordelen van het gebruik van triggers in SQL Server zijn onder meer:

  1. Databaseobjectregels worden vastgesteld door triggers, die ervoor zorgen dat wijzigingen ongedaan worden gemaakt als niet aan deze regels wordt voldaan.
  2. De trigger onderzoekt de gegevens en brengt indien nodig wijzigingen aan.
  3. Dankzij triggers kunnen we de data-integriteit afdwingen.
  4. Gegevens worden gevalideerd met behulp van triggers voordat ze worden ingevoegd of bijgewerkt.
  5. Triggers helpen ons bij het bijhouden van een recordlogboek.
  6. Omdat ze niet elke keer dat ze worden uitgevoerd, hoeven te worden gecompileerd, verbeteren triggers de prestaties van SQL-query's.
  7. De code aan de clientzijde wordt verminderd door triggers, waardoor tijd en arbeid worden bespaard.
  8. Triggeronderhoud is eenvoudig.

Nadeel van Triggers

De nadelen van het gebruik van triggers in SQL Server zijn onder meer:

  1. Alleen triggers staan ​​het gebruik van uitgebreide validaties toe.
  2. Er worden automatische triggers gebruikt en de gebruiker weet niet wanneer deze worden uitgevoerd. Bijgevolg is het moeilijk om problemen op te lossen die zich in de databaselaag voordoen.
  3. De overhead van de databaseserver kan toenemen als gevolg van triggers.
  4. In één enkele CREATE TRIGGER-instructie kunnen we dezelfde triggeractie opgeven voor meerdere gebruikersacties, zoals INSERT en UPDATE.
  5. Alleen de huidige database is beschikbaar voor het maken van triggers, maar ze kunnen nog steeds verwijzen naar objecten buiten de database.

Veel Gestelde Vragen

Vraag 1: Wat is een SQL-trigger?

Antwoord:

Een SQL-trigger is een databaseobject dat aan een tabel is gekoppeld en automatisch een reeks SQL-instructies uitvoert wanneer een specifieke gebeurtenis in die tabel plaatsvindt. Triggers worden gebruikt om bedrijfsregels af te dwingen, de gegevensintegriteit te behouden en bepaalde acties binnen een database te automatiseren. Ze kunnen worden geactiveerd door verschillende gebeurtenissen, zoals het invoegen, bijwerken of verwijderen van gegevens in een tabel, en ze bieden u de mogelijkheid aanvullende bewerkingen uit te voeren op basis van die gebeurtenissen.

Vraag 2: Hoe werken SQL-triggers?

Antwoord:

SQL-triggers worden gedefinieerd met behulp van SQL-instructies en zijn gekoppeld aan een specifieke tabel. Wanneer de gedefinieerde triggergebeurtenis (bijvoorbeeld INSERT, UPDATE, DELETE) in die tabel plaatsvindt, wordt de bijbehorende triggercode automatisch uitgevoerd. De triggercode kan bestaan ​​uit SQL-instructies die gegevens in dezelfde of andere tabellen kunnen manipuleren, beperkingen kunnen afdwingen of andere acties kunnen uitvoeren. Triggers worden uitgevoerd binnen het transactiebereik en kunnen worden gedefinieerd om vóór of na de triggerende gebeurtenis uit te voeren.

Vraag 3: Wat zijn de voordelen van het gebruik van SQL-triggers?

Antwoord:

De voordelen van het gebruik van SQL-triggers zijn onder meer:

Gegevensintegriteit: Met triggers kunt u complexe bedrijfsregels en beperkingen op databaseniveau afdwingen, zodat gegevens consistent en accuraat blijven.

Automatisering: Triggers kunnen repetitieve of complexe taken automatiseren door vooraf gedefinieerde acties uit te voeren wanneer een specifieke gebeurtenis plaatsvindt. Dit vermindert de noodzaak voor handmatige interventie en verbetert de efficiëntie.

Audittrails: Triggers kunnen worden gebruikt om wijzigingen in gegevens bij te houden, zoals het vastleggen van wijzigingen in een afzonderlijke audittabel. Dit helpt bij het controleren en bijhouden van een geschiedenis van gegevenswijzigingen.

Gegevensvalidatie: Triggers kunnen aanvullende validatiecontroles uitvoeren op gegevens voordat deze worden ingevoegd, bijgewerkt of verwijderd, zodat alleen geldige en conforme gegevens in de database worden opgeslagen.