Syntaxis:
Het volgende is de eenvoudige syntaxis voor het genereren van een trigger:
>> CRE TRER TRIGGER trigger_name [VOOR|NA|IN PLAATS VAN] gebeurtenisnaam OP tabelnaam [ ----Triggerlogica ];Hier is de uitleg van de bovenstaande algemene vraag:.
- Triggernaam: Naam van een trigger
- VOOR, NA, IN PLAATS VAN: Termen die bepalen wanneer de trigger actief is
- Evenement naam: Titel van het voorval dat de trigger zou kunnen activeren (dit kan zijn, of het nu gaat om INSERT of UPDATE of DELETE)
- Tafel naam: Specificeert de tabel waarop de trigger wordt geconstrueerd
Om het triggerconcept kort te begrijpen, start u de PostgreSQL-shell vanuit de toepassingen the. Wijzig de server als je op een andere server wilt werken, of druk op enter vanaf je toetsenbord. Voeg de databasenaam toe waaraan u wilt werken, laat het anders zoals het is en tik op enter. Zoals je kunt zien, werken we momenteel standaard aan poort 5432; je kunt het ook veranderen. Geef daarna een andere gebruikersnaam dan Postgres op als u met een andere gebruiker wilt werken, of laat deze leeg en druk op de enter-knop. Nu is je opdrachtshell klaar om te worden gebruikt.
TRIGGER bij INSERT-commando
Laten we eens kijken naar het voorbeeld van een trigger wanneer het INSERT-commando is gebruikt als een triggergebeurtenis. Hiervoor moeten we twee nieuwe tabellen maken, e.g., "in dienst nemen" en "controleren". De tabel "in dienst nemen" bevat de persoonlijke gegevens van de werknemers van een specifiek bedrijf en de tabel "audit" bevat de informatie over wanneer de werknemers bij het bedrijf zijn gekomen. De query's voor het maken van de tabellen worden hieronder gegeven:.
>> TABEL MAKEN in dienst (ID INTEGER NIET NULL PRIMAIRE SLEUTEL, Naam VARCHAR (100) NIET NULL, Leeftijd VARCHAR (100) NIET NULL, Salaris VARCHAR (100) NIET NULL);>> CREATE TABLE audit (empid INTEGER NOT NULL, entry_date VARCHAR(100) NOT NULL);
U moet een procedure maken die automatisch wordt uitgevoerd of werkt wanneer de trigger wordt aangeroepen. Het wordt gebruikt in de volgende opdracht CREATE TRIGGERGER. Met de onderstaande opdracht kunt u een idee krijgen dat we een procedure "auditlogfunc()" hebben gemaakt, die een trigger als variabele "$examp_table$" zal retourneren. De functie begint met de BEGIN-clausule, gevolgd door de INSERT-instructie. Deze INSERT-instructie voegt automatische id en huidige tijd-datum in met behulp van de ingebouwde functie in de "audit" -tabel en retourneert dit resultaat naar TRIGGER.
Het is tijd om een TRIGGER te genereren met de opdracht CREATE TRIGGER. We maken een trigger met de naam "emp_trig" in de tabel "employ". De clausule AFTER INSERT ON betekent dat deze trigger alleen werkt na het uitvoeren van het insert-commando. VOOR ELKE RIJ betekent dat bij de uitvoering van elk INSERT-commando, deze trigger de procedure "auditlogfunc()" aanroept en uitvoert die net voor.
>> MAAK TRIGGER emp_trig NA INSERT ON employ VOOR ELKE RIJ PROCEDURE UITVOEREN auditlogfunc();
Het is tijd om wat gegevens in de tabel "in dienst nemen" in te voegen. Voer het onderstaande INSERT-commando uit in de shell.
>> INSERT INTO dienst (ID, naam, leeftijd, salaris) WAARDEN ('1', 'Paul', '34', '60000');
Bekijk de tabel "in dienst nemen". De gegevens zijn succesvol toegevoegd met het INSERT-commando.
Neem nu een kijkje in de "audit" -tabel. U kunt zien, het is ook bijgewerkt vanwege trigger "emp_trig" en auditlogfunc().
TRIGGER bij UPDATE-opdracht
We gaan nu kijken naar een voorbeeld van een trigger die de opdracht UPDATE gebruikt als een triggergebeurtenis. We moeten opnieuw een nieuwe procedure maken met de andere naam "update" zoals weergegeven in de afbeelding. Deze procedure zal ook records invoegen in de 'audit'-tabel bij oproep.
Maak nu een nieuwe trigger met de naam "update_emp" met behulp van de opdracht CREATE TRIGGER. Dit werkt alleen na het uitvoeren van de UPDATE-query op de tabel en het zal de procedure "update" aanroepen.
Werk de tabel "employ" bij door de ID in te stellen op "2".
Haal de records van een tabel "in dienst" op om de wijzigingen te bekijken zoals hieronder toegevoegd.
Zoals u kunt zien in de tabel "audit", is deze gereorganiseerd omdat de tabel "werknemers" is bijgewerkt.
TRIGGER bij DELETE-opdracht
Open pgAdmin 4 vanuit applicaties om te werken aan GUI PostgreSQL. Onder het schema "test", vindt u een lijst met tabellen. Maak een nieuwe tabel "emp" en dezelfde "audit" -tabel.
Deze keer zullen we het trigger-commando oproepen met het DELETE-commando. Hieronder staat de tabel "emp" met enkele records.
Hier is de controletabel met de vorige twee updates.
Maak een procedure met de naam "Del()" om de invoeging in de "audit" -tabel te activeren bij het verwijderen van de records uit tabel "emp".
Maak een trigger "del_trig" met behulp van de CREATE TRIGGER-query. Deze trigger voert de procedure "Del" uit wanneer een DELETE-clausule wordt uitgevoerd op de tabel "emp".
Laten we een record verwijderen uit de tabel "emp" waar de werknemer "id" "5" is. Het zal een rij uit de tabel "emp" verwijderen.
Haal de records van tabel "emp" op en bekijk het. U kunt zien dat de rij is verwijderd waar de "id" "5" was.
Pak nu de "audit" -tabelrecords uit en u zult merken dat deze is bijgewerkt omdat de DELETE-bewerking is uitgevoerd op de tabel "emp".
Conclusie:
We hebben bijna elk essentieel voorbeeld gedaan om het concept van TRIGGER te begrijpen tijdens het uitvoeren van INSERT-, UPDATE- en DELETE-bewerkingen.