PostgreSQL CREATE TRIGGER

Samenvatting: in deze tutorial leert u hoe u het PostgreSQL CREATE TRIGGER statement gebruikt om een trigger te maken.

Om een nieuwe trigger in PostgreSQL te maken, volgt u deze stappen:

  • Eerst, maak een trigger functie met behulp van CREATE FUNCTION statement.
  • Tweede, bind de trigger functie aan een tabel met behulp van CREATE TRIGGER statement.

Als u niet bekend bent met het maken van een door de gebruiker gedefinieerde functie, kunt u kijken op de PL/pgSQL sectie.

Create trigger functie syntax

Een trigger functie is vergelijkbaar met een gewone door de gebruiker gedefinieerde functie. Echter, een trigger functie neemt geen argumenten en heeft een return waarde met het type trigger.

Het volgende illustreert de syntaxis van het maken van trigger functie:

Code language: SQL (Structured Query Language) (sql)

Merk op dat u een trigger functie kunt maken met behulp van elke taal die door PostgreSQL wordt ondersteund. In deze tutorial gebruiken we PL/pgSQL.

Een trigger functie ontvangt gegevens over zijn aanroepende omgeving via een speciale structuur genaamd TriggerData die een set van lokale variabelen bevat.

Bijvoorbeeld OLD en NEW vertegenwoordigen de staten van de rij in de tabel voor of na de triggerende gebeurtenis.

PostgreSQL biedt ook andere lokale variabelen, voorafgegaan door TG_, zoals TG_WHEN, en TG_TABLE_NAME.

Als u eenmaal een trigger-functie hebt gedefinieerd, kunt u deze binden aan een of meer trigger-gebeurtenissen, zoals INSERT, UPDATE, en DELETE.

Inleiding tot PostgreSQL CREATE TRIGGER statement

Het CREATE TRIGGER statement creëert een nieuwe trigger. Het volgende illustreert de basis syntaxis van het CREATE TRIGGER statement:

Code language: SQL (Structured Query Language) (sql)

In deze syntaxis:

Eerst, specificeer de naam van de trigger na de TRIGGER keywords.

Tweede, specificeer de timing die ervoor zorgt dat de trigger afgaat. Het kan BEFORE of AFTER een gebeurtenis optreedt.

Derde, specificeer de gebeurtenis die de trigger oproept. De gebeurtenis kan zijn INSERT , DELETE, UPDATE of TRUNCATE.

Vierde, specificeer de naam van de tabel geassocieerd met de trigger na de ON sleutelwoord.

Vijfde, geef het type van de triggers die kunnen zijn:

  • Row-niveau trigger die wordt gespecificeerd door de FOR EACH ROW clausule.
  • Statement-niveau trigger die wordt gespecificeerd door de FOR EACH STATEMENT clausule.

Een trigger op rijniveau wordt afgevuurd voor elke rij, terwijl een trigger op statement-niveau wordt afgevuurd voor elke transactie.

Voorstel dat een tabel 100 rijen heeft en twee triggers die worden afgevuurd wanneer een DELETE-gebeurtenis optreedt.

Als het DELETE-instructie 100 rijen verwijdert, zal de trigger op rijniveau 100 keer afgaan, eenmaal voor elke verwijderde rij. Een trigger op statement-niveau daarentegen wordt één keer afgevuurd, ongeacht het aantal rijen dat wordt verwijderd.

Specificeer tenslotte de naam van de trigger-functie na de EXECUTE PROCEDURE-keywords.

PostgreSQL CREATE TRIGGER voorbeeld

Het volgende statement creëert een nieuwe tabel genaamd employees:

Code language: SQL (Structured Query Language) (sql)

Voorstel dat wanneer de naam van een werknemer verandert, u de wijzigingen in een aparte tabel genaamd employee_audits wilt loggen:

Code language: SQL (Structured Query Language) (sql)

Maak eerst een nieuwe functie met de naam log_last_name_changes:

Code language: SQL (Structured Query Language) (sql)

De functie voegt de oude achternaam in de tabel employee_audits in, inclusief werknemers-id, achternaam, en het tijdstip van wijziging als de achternaam van een werknemer verandert.

De OLD vertegenwoordigt de rij vóór bijwerking terwijl de NEW de nieuwe rij vertegenwoordigt die zal worden bijgewerkt. De OLD.last_name geeft de achternaam vóór de update en de NEW.last_name geeft de nieuwe achternaam.

Tweede, bind de trigger functie aan de employees tabel. De naam van de trigger is last_name_changes. Voordat de waarde van de kolom last_name wordt bijgewerkt, wordt de trigger-functie automatisch aangeroepen om de wijzigingen te loggen.

Code language: SQL (Structured Query Language) (sql)

Derde, voeg enkele rijen in de tabel employees in:

Code language: SQL (Structured Query Language) (sql)

Vierde, onderzoek de inhoud van de tabel employees:

Code language: SQL (Structured Query Language) (sql)

Voorstel dat Lily Bush haar achternaam wijzigt in Lily Brown.

Vijfde, werk Lily’s achternaam bij naar de nieuwe naam:

Code language: SQL (Structured Query Language) (sql)

Zevende, controleer of de achternaam van Lily is bijgewerkt:

Code language: SQL (Structured Query Language) (sql)

Zoals u in de uitvoer kunt zien, is Lily’s achternaam bijgewerkt.

Ten achtste controleert u de inhoud van de tabel employee_audits:

Code language: SQL (Structured Query Language) (sql)

De wijziging is door de trigger in de tabel employee_audits vastgelegd.

In deze zelfstudie hebt u geleerd hoe u de PostgreSQL CREATE TRIGGER kunt gebruiken om een nieuwe trigger te maken.

  • Was deze zelfstudie nuttig ?
  • JaNee

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.