Trigger. Basi di dati attive. Trigger: regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi

Documenti analoghi
Tali regole vengono attivate in modo automatico al verificarsi di specifici eventi sulla. eseguono azioni sulla base di dati stessa.

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

Basi di Dati: Corso di laboratorio

Le Basi di Dati Attive

Silvia Chiusano, Paolo Garza 1

Triggers. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza

Basi di dati attive. Una base di dati è ATTIVA quando consente la definizione e la gestione di regole di produzione (regole attive o trigger).

Basi di Dati e Sistemi Informativi. Asserzioni, Viste e Trigger Basi di dati Attive

Il linguaggio SQL: trigger

Corso di Basi di Dati

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Tabelle esempio: Impiegato/Dipartimento

Tecnologia delle Basi di Dati Esercitazione #4 Definizione dei trigger in Oracle

IMPIEGATO(Nome, Salario, DipNum) DIPARTIMENTO (DipNum, NomeManager)

Introduzione. i trigger rendono reattivo il comportamento del sistema alle sollecitazioni esterne.

Laboratorio di Basi di Dati

Basi di dati attive 1

Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio

Elena Baralis 2007 Politecnico di Torino 1

Basi di Dati: Corso di laboratorio

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Interrogazioni$e$il$valore$NULL$

Manuale SQL. Manuale SQL - 1 -

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Corso di Basi di Dati

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

Laboratorio di Basi di Dati SQL avanzato

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Il linguaggio SQL: le viste

Interrogazioni nidificate

Interrogazioni nidificate

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza

Triggers Esercitazione 1

Cap. 5 Basi di dati attive

Basi di Dati Parallele

Capitolo 7. Esercizio 7.1

LABORATORIO di INFORMATICA

Progettazione di Sistemi Informatici

Basi di Dati: Corso di laboratorio

SQL: Definizione e Manipolazione di Relazioni. Capitolo 2

TRIGGER Regole Attive (Trigger) OLD_TABLE NEW_TABLE old new

PARTITIONING PARTITIONING. 27/11/08 /home/scotty/enrico/corso web/finale/architettura/partit page 1

Transazioni. Transazioni. Stati di una transazione. Transazioni

Transazioni. Antonella Poggi. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

SQL PER LA DEFINIZIONE DI BASI DI DATI

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Data Management Software. Il linguaggio SQL. Query Innestate. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003

Vincoli e Triggers. Vincoli. Tipo di vincoli. Chiavi esterne

Laboratorio di Basi di Dati

Istruzioni DCL di SQL. Pag. 119 par.5

SQL: DDL, VI, Aggiornamenti e Viste

SQL - Sottointerrogazioni

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

σ data 15/12/2013 data 20/12/2014

Servlet & JDBC. Alberto Belussi. anno accademico 2008/2009

Lezione 8. Metadati, Viste e Trigger

Basi di dati. Linguaggio SQL: fondamenti - Introduzione. Elena Baralis 2007 Politecnico di Torino 1 D B M G 2 D B M G D B M G 4 D B M G 6

Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso

Alessandra Raffaetà. Esercizio: Cinema

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

DATABASE PER IL WEB. Programmazione Web 1

ESEMPIO DI TRIGGER PER IL CONTROLLO DELLE PROPRIETÀ COPERTURA DI UNA GERARCHIA (ARGOMENTO SVOLTO IN CLASSE IL 25 MAGGIO 2011)

Laboratorio di PL/SQL 3 Esercizi svolti e valutati

PROVA SCRITTA DI TECNOLOGIA DATABASE 02/12/2004 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Nozione ed uso. Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso:

Esercitazione 1 SQL: DDL e DML di base

Capitolo 5. Soluzione: Soluzione in C:

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

Il linguaggio SQL: query innestate

SQL - Elementi più avanzati

Caratteristiche dei linguaggi per Database

Oracle PL/SQL. Motivazioni

Fondamenti di Teoria delle Basi di Dati

SQL - Structured Query Language

Strutture fisiche e strutture di accesso ai dati

<Nome Tabella>.<attributo>

Uno dei principali motivi del successo delle basi di dati: è diventato uno standard

Ogni ufficio è formato da 100 dipendenti, i quali hanno a loro volta 3 clienti ciascuno. Inoltre, ad ogni ufficio sono stati assegnati 4 fornitori.

Modello Relazionale. Esempio (Relazione) A x B. Introduzione. Relazione: definizione. I fattori del successo. Relazione

Tecnologia delle Basi di Dati

SQL nei linguaggi di programmazione

PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle

Corso di Basi di Dati A.A. 2015/2016

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al

Gestione della Concorrenza

Soluzione esercitazione 01

MY SQL Guida MySQL di base

Basi di dati (3) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: DML (1.

2011 Politecnico di Torino 1

Viene richiesto di MIN CARD(S,E) = 1 UPDATE DELETE MAX CARD(S,E) = 3 INSERT UPDATE

BASI DATI: algebra relazionale

Linguaggio SQL seconda parte

Esercitazione 4: Trigger in DB2

MODULO 2. Query normali e parametriche Query di:

Transcript:

Basi di dati attive : regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi Oggi fanno parte dello standard SLQ-99 In passato ogni DBMS li implementava seguendo una propria sintassi Negli esempi che vedremo faremo riferimento alla sintassi seguita in Oracle, molto vicina alla sintassi SQL-99 2 1

Basi di dati attive La specifica di una regola è generalmente effettuata attraverso il modello ECA: Event-Condition-Action 3 Modello ECA (EventConditionAction) L evento può corrispondere ad una operazione di aggiornamento del DB ad un evento sistematico (ogni giorno alle 21.30) ad un evento esterno (un utente che si collega al DBMS) Al verificarsi dell evento viene attivata la regola 4 2

Modello ECA (EventConditionAction) Condizione Definisce una condizione da verificarsi prima di procedere effettivamente all esecuzione della regola La condizione è facoltativa: Se non viene specificata, la regola viene eseguita ogni volta che si verifica l evento Se è specificata, la regola viene eseguita solo se la condizione è TRUE 5 Modello ECA (EventConditionAction) Azione Di solito è una sequenza di comandi SQL (o PL/SQL), ma può essere anche una transazione sul DB o un programma esterno 6 3

Per illustrare la definizione ed il funzionamento dei trigger consideriamo il seguente DB - CF_responsabile è una chiave esterna ricorsiva Dipart può essere NULL per quegli impiegati non ancora affiliati ad alcun dipartimento Stip_totale è un attributo derivato che deve riflettere la somma degli stipendi degli impiegati affiliati Il valore corretto dell attributo derivato può essere mantenuto attraverso un trigger 7 Quali eventi possono causare un cambiamento dell attributo derivato Stip_totale? Inserimento di (una o più) tuple di nuovi impiegati Cambiamento di stipendio di (uno o più) impiegati esistenti Cambiamento di affiliazione di impiegati da un dipartimento all altro Eliminazione di (una o più) tuple di impiegati 8 4

Inserimento di (una o più) tuple di nuovi impiegati Se i nuovi impiegati hanno campo Dipart=NULL non bisogna far nulla Altrimenti bisogna aggiornare il valore Stip_totale per i dipartimenti interessati In questo caso, esiste una condizione che, se verificata, inibisce l esecuzione della regola 9 Inserimento di (una o più) tuple di nuovi impiegati CREATE TRIGGER STIPTOTALE1 AFTER INSERT ON FOR EACH ROW WHEN (NEW.Dipart IS NOT NULL) UPDATE SET Stip_totale = Stip_totale + :NEW.Stipendio WHERE Numero = :NEW.Dipart; 10 5

Cambiamento di stipendio di (uno o più) impiegati esistenti Aggiornare il valore Stip_totale per i dipartimenti interessati 11 Cambiamento di stipendio di (uno o più) impiegati esistenti CREATE TRIGGER STIPTOTALE2 AFTER UPDATE OF Stipendio ON FOR EACH ROW WHEN (NEW.Dipart IS NOT NULL) UPDATE SET Stip_totale = Stip_totale - :OLD.Stipendio + :NEW.Stipendio WHERE Numero = :NEW.Dipart; 12 6

Cambiamento di affiliazione di impiegati da un dipartimento all altro Aggiornare il valore Stip_totale per i dipartimenti interessati 13 Cambiamento di affiliazione di impiegati da un dipartimento all altro CREATE TRIGGER STIPTOTALE3 AFTER UPDATE OF Dipart ON FOR EACH ROW BEGIN UPDATE SET Stip_totale = Stip_totale + :OLD.Stipendio WHERE Numero = :NEW.Dipart; UPDATE SET Stip_totale = Stip_totale - :OLD.Stipendio WHERE Numero = :OLD.Dipart; END 14 7

Eliminazione di (una o più) tuple di impiegati Aggiornare il valore Stip_totale per i dipartimenti interessati 15 Eliminazione di (una o più) tuple di impiegati CREATE TRIGGER STIPTOTALE4 AFTER DELETE ON FOR EACH ROW UPDATE SET Stip_totale = Stip_totale - :OLD.Stipendio WHERE Numero = :OLD.Dipart; 16 8

La clausola (facoltativa) FOR EACH ROW provoca l applicazione della regola ad ogni riga, separatamente Si parla di trigger a livello di riga (row-level) Se la clausola viene omessa la regola viene applicata una volta per ogni istruzione Si parla di trigger a livello di istruzione (statement-level) 17 Supponiamo di avere una operazione di aggiornamento che aumenta del 10% lo stipendio degli impiegati del dipartimento 5 UPDATE SET Stipendio = Stipendio*1.10 WHERE Dipart=5; Questa istruzione potrebbe eseguire l aggiornamento simultaneo di tutti i valori di Stipendio delle tuple interessate 18 9

UPDATE SET Stipendio = Stipendio*1.10 WHERE Dipart=5; tuttavia, attivando il trigger STIPTOTALE2, che è di tipo FOR EACH ROW, l aggiornamento causerà l attivazione del trigger per tante volte quanti sono gli impiegati del dipartimento 5 19 a livello di istruzione Velocità d esecuzione Non si possono usare i costrutti OLD e NEW a livello di riga Riducono la velocità d esecuzione dei comandi di aggiornamento (ma sono più veloci se l aggiornamento riguarda una sola riga) Attraverso i costrutti OLD e NEW si può fare riferimento ai valori di ciascuna singola tupla 20 10

La scelta tra before e after può essere guidata dal seguente criterio: Se una riga inserita o modificata (NEW) può essere cambiata all interno dell azione allora è necessario un trigger before Se invece una riga inserita o modificata non può essere cambiata all interno dell azione allora è sufficiente un trigger after 21 11