PostgreSQL

PostgreSQL Skapa utlösare efter INSERT / UPDATE / DELETE

PostgreSQL Skapa utlösare efter INSERT / UPDATE / DELETE
När en definierad ändringsåtgärd (SQL INSERT, UPDATE, DELETE eller TRUNCATE-deklaration) utförs på en definierad tabell, är en trigger en serie uppsättning händelser som körs automatiskt. Utlösare kan användas för att införa affärsregler, autentisera ingångsinformation och upprätthålla ett granskningsspår. SQL-utlösare implementeras enligt SQL-format. Den innehåller strukturer som används på flera programmeringsspråk så att du kan deklarera lokala variabler, övervaka processens flöde med deklarationer, allokera uttalande till variabler och hantera fel. När du väl har konstruerat en trigger för något, som en tabell, tas avtryckaren omedelbart bort så snart tabellen tas bort. Vi tittar på hur PostgreSQL Triggers fungerar i hela detta segment.

Syntax:

Följande är den enkla syntaxen för att generera en trigger:

>> CREATE TRIGGER trigger_name [FÖRE | EFTER | INSTEAD OF] event-name ON table_name [---- Trigger Logic];

Här är förklaringen till ovanstående allmänna fråga.

För att förstå utlösarkonceptet kort, starta PostgreSQL-skalet från applikationerna. Byt server om du vill arbeta på en annan server eller annars trycker du på enter från tangentbordet. Lägg till databasnamnet du vill arbeta med, annars lämna det som det är och tryck på Enter. Som du ser har vi för närvarande arbetat med port 5432 som standard; du kan också ändra det. Efter det, ange ett annat användarnamn än Postgres om du vill arbeta med en annan användare, annars lämna det tomt och tryck på Enter-knappen. Nu är ditt kommandoskal redo att användas.

TRIGGER Vid INSERT-kommando

Låt oss titta på exemplet på en trigger när INSERT-kommandot har använts som en triggerhändelse. För detta måste vi skapa två nya tabeller, t.ex.g., "Anställa" och "granska". Tabellen "anställa" kommer att innehålla de anställdas personliga register från ett visst företag och tabellen "revision" kommer att innehålla information om när de anställda gick med i företaget. Frågorna för att skapa tabellerna ges nedan.

>> SKAPA TABELL anställa (ID INTEGER INTE NULL PRIMÄR NYCKEL, Namn VARCHAR (100) INTE NULL, Ålder VARCHAR (100) INTE NULL, Lön VARCHAR (100) INTE NULL);

>> CREATE TABLE audit (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);

Du måste skapa ett förfarande som automatiskt körs eller fungerar när avtryckaren kommer att anropas. Den kommer att användas i nästa CREATE TRIGGER-kommando. Från kommandot nedan kan du få en uppfattning om att vi har skapat en procedur "auditlogfunc ()", som kommer att returnera en utlösare som variabel "$ examp_table $". Funktionen börjar med BEGIN-satsen, följt av INSERT-satsen. Detta INSERT-uttalande infogar automatiskt id och aktuellt tidsdatum med hjälp av den inbyggda funktionen i "revision" -tabellen och returnerar detta resultat till TRIGGER.

Det är dags att skapa en TRIGGER med kommandot CREATE TRIGGER. Vi skapar en utlösare som heter "emp_trig" på bordet "anställa". Klausulen EFTER INSÄTTNING PÅ betyder att denna utlösare bara fungerar efter genomförandet av insättningskommandot. FÖR VARJE RAD betyder vid körning av varje INSERT-kommando, kommer denna utlösare att anropa och utföra “auditlogfunc ()” -proceduren som skapades precis före.

>> SKAPA TRIGGER emp_trig EFTER INSÄTTNING PÅ ANVÄNDA FÖR VARJE RÅKÖPNINGSFÖRFARANDE auditlogfunc ();

Det är dags att infoga lite data i tabellen "anställa". Utför kommandot INSERT nedan i skalet.

>> INSÄTTA I ANVÄNDA (ID, namn, ålder, lön) VÄRDEN ('1', 'Paul', '34', '60000');

Ta en titt på tabellen "anställa". Data har lagts till framgångsrikt med INSERT-kommandot.

Nu får du en glimt av tabellen "revision". Du kan se, det uppdateras också på grund av trigger “emp_trig” och auditlogfunc ().

TRIGGER Vid UPDATE-kommando

Vi kommer nu att titta på ett exempel på en trigger med UPDATE-kommandot som en triggerhändelse. Vi måste skapa en ny procedur igen med det andra namnet "uppdatering" som visas i bilden. Denna procedur kommer också att infoga poster i "revision" -tabellen vid samtal.

Skapa nu en ny trigger med namnet “update_emp” med kommandot CREATE TRIGGER. Detta fungerar bara efter körningen av UPDATE-frågan på tabellen använder och det kommer att kalla proceduren "uppdatering".

Uppdatera tabellen "anställa" genom att ställa in dess ID till "2".

Hämta posterna för en tabell som "använder" för att se ändringarna enligt nedan.

Som du kan se på tabellen "granskning" har den omorganiserats i takt med att tabellen "anställa" uppdaterades.

TRIGGER Vid RADERA kommando

Öppna pgAdmin 4 från applikationer för att arbeta på GUI PostgreSQL. Under schemat "test" hittar du en lista med tabeller. Skapa en ny tabell "emp" och samma "revision" -tabell.

Den här gången anropar vi utlösarkommandot med RADERA-kommandot. Nedan är tabellen "emp" med några poster.

Här är revisionstabellen med de två föregående uppdateringarna.

Skapa en procedur med namnet "Del ()" för att utlösa infogningen i "granskning" -tabellen när du raderar posterna från tabellen "emp".

Skapa en utlösare "del_trig" med CREATE TRIGGER-frågan. Denna trigger kommer att utföra proceduren "Del" när någon DELETE-sats kommer att utföras på bordet "emp".

Låt oss ta bort en post från tabellen "emp" där medarbetarens "id" är "5". Det raderar en rad från tabellen "emp".

Hämta posterna för tabellen "emp" och titta på den. Du kan se att raden har tagits bort där "id" var "5".

Extrahera nu "granskning" -tabellposterna och du kommer att märka att den har uppdaterats eftersom DELETE-operationen har utförts på tabellen "emp".

Slutsats:

Vi har gjort nästan alla viktiga exempel för att förstå begreppet TRIGGER när vi utför INSERT-, UPDATE- och DELETE-operationer.

Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...
5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...
Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...