Home Insegnanti Contattami Portfolio

SQL: Trigger

0️⃣ Link utili

Trigger (basi di dati)
Il trigger, nelle basi di dati, è una procedura che viene eseguita in maniera automatica in coincidenza di un determinato evento, come ad esempio la cancellazione di un record di una tabella. In questo modo si ha a disposizione una tecnica per specificare e mantenere vincoli di integrità anche complessi. I trigger permettono agli utenti di specificare vincoli di integrità più complessi dato che un trigger è essenzialmente una procedura PL/SQL (Oracle),[1] Transact-SQL (Microsoft),[2] PL/pgSQL (PostgreSQL),[3] ecc.
https://it.wikipedia.org/wiki/Trigger_(basi_di_dati)
SQL Server Trigger Example
Learn about SQL Server triggers, their use and how to create a simple trigger to track data changes in a table.
https://www.mssqltips.com/sqlservertip/5909/sql-server-trigger-example/
CREATE TRIGGER (Transact-SQL) - SQL Server
Informazioni di riferimento Transact-SQL per l'istruzione CREATE TRIGGER, usata per creare un trigger DML, DDL o LOGON.
https://learn.microsoft.com/it-it/sql/t-sql/statements/create-trigger-transact-sql?view=sql-server-ver16

1️⃣ Cosa sono?

I trigger sono delle procedure che vengono eseguite quando si verifica un evento nel database, in maniera automatica.

I trigger permettono agli utenti di specificare vincoli di integrità più complessi.

I trigger, in particolare, vengono eseguiti quando un utente esegue un operazione di:

I trigger vengono eseguiti quando si verifica un evento valido, altrimenti vengono “ignorati”.

2️⃣ A cosa servono?

I trigger possono servire per diversi scopi:

  1. per mantenere l'integrità referenziale tra le varie tabelle
  1. per mantenere l'integrità dei dati della singola tabella
  1. per monitorare i campi di una tabella ed eventualmente generare eventi ad hoc
  1. per creare tabelle di auditing per i record che che vengono modificati o eliminati

4️⃣ Sintassi

CREATE TRIGGER trigger_name
ON { Table name or view name }   
[ WITH <Options> ]  
{ FOR | AFTER | INSTEAD OF }   
{ [INSERT], [UPDATE] , [DELETE] }

📝 Esempi

per gli esempi sottostanti prendiamo in considerazione la seguente tabella:

CREATE TABLE Student(
		studentID INT NOT NULL AUTO_INCREMENT,
		FName VARCHAR(20),
		LName VARCHAR(20),
		Address VARCHAR(30),
		City VARCHAR(15),
		Marks INT,
		PRIMARY KEY(studentID)
);

Esempio 1

Nel trigger sottostante, stiamo cercando di calcolare la percentuale dello studente non appena i suoi dettagli vengono aggiornati al database.

CREATE TRIGGER sample_trigger
before INSERT
ON student
FOR EACH ROW
SET new.total = new.marks/6;

Esempio 2

Qui quando inseriamo i dati nella tabella studente automaticamente il trigger verrà invocato. Il trigger aggiungerà 100 alla colonna marks nella colonna student.

CREATE TRIGGER calculate
before INSERT 
ON student
FOR EACH ROW
SET new.marks = new.marks+100;

Esempio 3

inanzitutto creiamo una seconda tabella per questo specifico esempio:

create table Final_mark(
per int );

Quando inseriamo i dati nella tabella, il trigger total mark memorizza il risultato nella tabella Final_mark.

CREATE TRIGGER total_mark
after INSERT
ON student
FOR EACH ROW
insert into Final_mark values(new.marks);