In questa lezione affronteremo i seguenti argomenti:
• Creazione e utilizzo di viste (views)
• Implementazione di trigger per rispondere agli eventi del database
• Trigger DML e DDL: AFTER INSERT, UPDATE, DELETE e altri
• Gestione delle transazioni nei trigger
Creazione e utilizzo di viste (views):
Le viste sono query salvate che possono essere trattate come tabelle virtuali.
Esempio:
-- Creazione di una vista che mostra gli utenti con età superiore a 25
CREATE VIEW VistaUtentiOver25 AS
SELECT Nome, Cognome, Età FROM Utenti WHERE Età > 25;
-- Utilizzo della vista
SELECT * FROM VistaUtentiOver25;
Le viste semplificano le query complesse, rendendo più agevole l'accesso ai dati.
Implementazione di trigger:
I trigger sono blocchi di codice automaticamente eseguiti in risposta a determinati eventi.
Esempio:
-- Creazione di un trigger DML (AFTER INSERT)
CREATE TRIGGER Trig_AfterInsert ON Utenti AFTER INSERT AS BEGIN PRINT 'Nuovo utente inserito!'; END;
-- Esempio di INSERT che attiverà il trigger
INSERT INTO Utenti (Nome, Cognome, Età) VALUES ('Giuseppe', 'Verdi', 35);
Il trigger stampa un messaggio ogni volta che viene inserito un nuovo utente.
Trigger DML e DDL: AFTER INSERT, UPDATE, DELETE e altri:
I trigger possono rispondere a eventi come l'inserimento, l'aggiornamento o l'eliminazione di dati (DML) e persino a modifiche nella struttura del database (DDL).
Gestione delle transazioni nei trigger:
I trigger possono far parte di transazioni più ampie.
Esempio:
-- Creazione di un trigger con gestione delle transazioni
CREATE TRIGGER Trig_Transazione ON Utenti AFTER INSERT AS
BEGIN
BEGIN TRANSACTION;
-- Altre istruzioni nel trigger
COMMIT;
END;
Il trigger può essere parte di una transazione più grande, garantendo la coerenza dei dati.
In questa lezione, abbiamo esplorato la creazione e l'utilizzo di viste per semplificare le query e l'implementazione di trigger per rispondere agli eventi del database. Nelle prossime lezioni, esamineremo i sistemi di gestione delle transazioni e approfondiremo la sicurezza in Transact-SQL.