PostgreSQL

PostgreSQL-trigger maken na INSERT/UPDATE/DELETE

PostgreSQL-trigger maken na INSERT/UPDATE/DELETE
Telkens wanneer een gedefinieerde wijzigingsactie (SQL INSERT-, UPDATE-, DELETE- of TRUNCATE-declaratie) wordt uitgevoerd op een gedefinieerde tabel, is een trigger een reeks gebeurtenissen die automatisch worden uitgevoerd. Triggers kunnen worden gebruikt om bedrijfsregels op te leggen, invoerinformatie te verifiëren en een controlespoor te onderhouden. SQL-triggers worden geïmplementeerd volgens het SQL-formaat. Het bevat structuren die in verschillende programmeertalen worden gebruikt, zodat u lokale variabelen kunt declareren, de stroom van het proces met declaraties kunt volgen, statementresultaten aan variabelen kunt toewijzen en fouten kunt afhandelen. Bovendien, als je eenmaal een trigger voor iets hebt gemaakt, zoals een tafel, wordt de trigger onmiddellijk verwijderd zodra de tafel wordt verwijderd. We zullen bekijken hoe PostgreSQL-triggers in dit segment werken.

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:.

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.

Vulkan voor Linux-gebruikers
Met elke nieuwe generatie grafische kaarten zien we game-ontwikkelaars de grenzen van grafische betrouwbaarheid verleggen en een stap dichter bij foto...
OpenTTD versus Simutrans
Je eigen transportsimulatie maken kan leuk, ontspannend en buitengewoon aanlokkelijk zijn. Daarom moet je ervoor zorgen dat je zoveel mogelijk spellen...
OpenTTD-zelfstudie
OpenTTD is een van de meest populaire simulatiegames voor bedrijven die er zijn. In dit spel moet je een geweldig transportbedrijf creëren. U begint e...