PostgreSQL Trigger: crea, elenca e rilascia con l'esempio
โก Riepilogo intelligente
PostgreSQL I trigger sono funzioni che vengono eseguite automaticamente quando si verifica un evento INSERT, UPDATE o DELETE su una tabella, consentendo al database di applicare regole, registrare le modifiche e controllare i dati senza la necessitร di codice applicativo aggiuntivo.

Cos'รจ Trigger? PostgreSQL?
A PostgreSQL grilletto Un trigger รจ una funzione che si attiva automaticamente quando si verifica un evento di database su un oggetto del database, ad esempio una tabella. Esempi di eventi di database che possono attivare un trigger includono INSERT, UPDATE, DELETE, ecc. Inoltre, quando si crea un trigger per una tabella, il trigger verrร automaticamente disattivato quando la tabella viene eliminata.
Come viene utilizzato Trigger PostgreSQL?
Un trigger puรฒ essere contrassegnato con l'operatore FOR EACH ROW durante la sua creazione. Tale trigger verrร richiamato una volta per ogni riga modificata dall'operazione. Un trigger puรฒ anche essere contrassegnato con l'operatore FOR EACH STATEMENT durante la sua creazione. Questo trigger verrร eseguito una sola volta per una specifica operazione.
PostgreSQL creare trigger
Per creare un trigger, utilizziamo la funzione CREATE TRIGGER. Ecco la sintassi della funzione:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name ON table-name [ -- Trigger logic ];
Il trigger-name รจ il nome del trigger.
BEFORE, AFTER e INSTEAD OF sono parole chiave che determinano quando verrร richiamato il trigger.
Il nome evento รจ il nome dell'evento che causerร il richiamo del trigger. Questo puรฒ essere INSERT, AGGIORNA, ELIMINA, ecc.
Il nome-tabella รจ il nome della tabella su cui deve essere creato il trigger.
Se il trigger deve essere creato per un'operazione INSERT, dobbiamo aggiungere il parametro ON nome-colonna.
La seguente sintassi lo dimostra:
CREATE TRIGGER trigger-name AFTER INSERT ON column-name ON table-name [ -- Trigger logic ];
PostgreSQL Crea esempio di trigger
Utilizzeremo la tabella dei prezzi riportata di seguito:
Prezzo:
Creiamo un'altra tabella, Price_Audits, dove registreremo le modifiche apportate alla tabella Price:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL );
Ora possiamo definire una nuova funzione denominata auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql;
La funzione precedente inserirร un record nella tabella Price_Audits incluso il nuovo ID riga e l'ora di creazione del record.
Ora che abbiamo la funzione trigger, dobbiamo collegarla alla nostra tabella Prezzi. Daremo al trigger il nome price_trigger. Prima della creazione di un nuovo record, la funzione trigger verrร richiamata automaticamente per registrare le modifiche. Ecco il trigger:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc();
Inseriamo un nuovo record nella tabella Prezzi:
INSERT INTO Price VALUES (3, 400);
Ora che abbiamo inserito un record nella tabella Prezzi, un record dovrebbe essere inserito anche nella tabella Prezzi_Verifiche grazie al trigger che abbiamo creato. Verifichiamolo:
SELECT * FROM Price_Audits;
Verrร restituito quanto segue:
Il trigger ha funzionato correttamente.
PostgreSQL Trigger elenco
Tutti i trigger che crei in PostgreSQL sono memorizzati nella tabella pg_trigger. Per visualizzare l'elenco dei trigger presenti sul file banca dati, interroga la tabella eseguendo il comando SELECT come mostrato di seguito:
SELECT tgname FROM pg_trigger;
Questo restituisce quanto segue:
La colonna tgname della tabella pg_trigger indica il nome del trigger.
PostgreSQL Grilletto di caduta
Quando un trigger non รจ piรน necessario, puoi rimuoverlo con la stessa facilitร . Per eliminare un PostgreSQL trigger, utilizziamo l'istruzione DROP TRIGGER con la seguente sintassi:
DROP TRIGGER [IF EXISTS] trigger-name
ON table-name [ CASCADE | RESTRICT ];
Il parametro trigger-name indica il nome del trigger che deve essere eliminato.
Il nome della tabella indica il nome della tabella da cui deve essere eliminato il trigger.
La clausola IF EXISTS tenta di eliminare un trigger esistente. Se tenti di eliminare un trigger che non esiste senza utilizzare la clausola IF EXISTS, riceverai un errore.
L'opzione CASCADE ti aiuterร a rilasciare automaticamente tutti gli oggetti che dipendono dal trigger.
Se si utilizza l'opzione RESTRICT, il trigger non verrร eliminato se gli oggetti dipendono da esso.
Per esempio:
Per rilasciare il trigger denominato example_trigger nella tabella Company, eseguire il seguente comando:
DROP TRIGGER example_trigger IF EXISTS
ON Company;
Utilizzando pgAdmin
Vediamo ora come vengono eseguite tutte e tre le azioni utilizzando pgAdmin.
Come creare Trigger in PostgreSQL utilizzando pgAdmin
Ecco come puoi creare un trigger in PostgreSQL utilizzando pgAdmin:
Passaggio 1) Accedi al tuo account pgAdmin
Apri pgAdmin ed effettua l'accesso al tuo account utilizzando le tue credenziali.
Passaggio 2) Creare un database dimostrativo
- Dalla barra di navigazione a sinistra, fare clic su Database.
- Fare clic su Demo.
Passaggio 3) Digitare la query
Per creare la tabella Price_Audits, digita la query nell'editor:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL )
Passaggio 4) Eseguire la query
Fare clic sul pulsante Esegui.
Passaggio 5) Esegui il file Code per la funzione di audit
Eseguire il seguente codice per definire la funzione auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql
Passaggio 6) Esegui il file Code per creare il trigger
Eseguire il seguente codice per creare il trigger price_trigger:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc()
Passaggio 7) Inserisci un nuovo record
- Eseguire il seguente comando per inserire un nuovo record nella tabella Prezzi:
INSERT INTO Price VALUES (3, 400)
- Eseguire il seguente comando per verificare se un record รจ stato inserito nella tabella Price_Audits:
SELECT * FROM Price_Audits
Questo dovrebbe restituire quanto segue:
Passaggio 8) Controllare il contenuto della tabella
Verifichiamo il contenuto della tabella Price_Audits.
Elencare i trigger utilizzando pgAdmin
Passo 1) Esegui il seguente comando per controllare i trigger nel tuo database:
SELECT tgname FROM pg_trigger
Questo restituisce quanto segue:
Cadereping Attivazione tramite pgAdmin
Per rilasciare il trigger denominato example_trigger nella tabella Company, eseguire il seguente comando:
DROP TRIGGER example_trigger IF EXISTS
ON Company
Scarica il database utilizzato in questo tutorial







