Sistemi di gestione di basi di dati

Documenti analoghi
Tecnologia delle Basi di Dati

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

Silvia Chiusano, Paolo Garza 1

La connessione ai database MySQL tramite script PHP versione 5.5

Villafranca Fatturazione Elettronica. Accesso e utilizzo del portale web. Fatturazione Elettronica - Computers Center snc 1

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

24. Trigger in MySQL 5

Inserire record. Microsoft Access. Inserire/modificare record. Inserire record. Cancellare record. Inserire/modificare record

Guida. CYS Gestioni. Sviluppato da Matteo Tucceri con la collaborazione di Paola Tucceri.

Basi di Dati. Applicazioni web in PHP per l interrogazione di basi di dati. Esercitazione n. 5

Corso di. Basi di Dati I. 10. Esercitazioni in SQL: Complementi

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

LEGGE CASA L.R. 24/2009 MANUALE OPERATIVO UTENTI PARTOUT

Corso di. Basi di Dati I. 10. Esercitazioni in SQL: Complementi

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

Connessione con MySQL

Utilizzo delle Maschere in Microsoft Access

Laboratorio di Basi di Dati e Multimedia

Per eseguire una ricerca parziale si deve anteporre o seguire il carattere asterisco alla parola. Esempio

Laboratorio di Basi di Dati

Esercitazione 4: Trigger in DB2

Esercitazione 4: Trigger in DB2

Data Science e Tecnologie per le Basi di Dati

Gestione Registro delle lezioni

Manuale Gestione Titolo di Viaggio ATAC

Corso di Access. Prerequisiti. Modulo L2A (Access) Struttura delle tabelle

Filtri. Microsoft Access. Filtri. Filtri

Corso sul linguaggio SQL

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

Cap. 7 -Trigger e loro uso

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

GRUPPO24 ORE Portale dei materiali MANUALE UTENTE PRIMO INVIO SUL PORTALE

Registro nazionale delle persone che non hanno fissa dimora - Istruzioni Operative funzionalità INA WEB

Manuale interfaccia Gestione contratti Legge 190/2012

Fondamenti di Informatica A. A / 1 9

GUIDA PER ACCREDITARSI ALLA PAGINA PERSONALE

Servizi e-business Acquisti a catalogo elettronico Manuale Fornitore

Basi di Dati: Corso di laboratorio

SQL - Structured Query Language

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Anagrafica Operatori

MANUALE DEL PROGRAMMA eamministra SOMMARIO

Connessione con MySQL

COMUNICAZIONI AMMINISTRATIVE Guida alla redazione dei comunicati amministrativi

GALLERY. Album immagini

SIFORM 2. Sistema Informativo della Formazione Professionale. Manuale Utente. Accreditamento al SIFORM 2

Creazione e svolgimento di una nuova Esercitazione Guidata

Guida all uso del sistema gestionale schede online per attività commerciali e turistiche

Laboratorio di Progettazione Web

MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ

Folium. Quick guide: gestione documentale e fascicolazione elettronica. Dicembre FOLIUM: Gestione documentale e fascicolazione elettronica

2011 Politecnico di Torino 1

Laboratorio Basi di Dati Laura Po

MANUALE PER LA GESTIONE

FISIONLINE GUIDA OPERATIVA. Versione 1.0

DISPENSA ACCESS (OFFICE 2010 BETA)

INDICE. FattureGO Guida introduttiva

Lezione 13. Il trattamento dei dati. database: il linguaggio SQL seconda parte. Proff. Valle Folgieri

Lezione 12. Il trattamento dei dati. database: il linguaggio SQL seconda parte. Proff. Valle Folgieri

DOCUMENTO SUPPORTO PER AVVIO OIL SCUOLE CON SISTEMA SIDI

AREA RISERVATA Gestore tamoil.it

A.A. 2018/2019. Esercitazione 12. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

Guida per l utilizzo della WEB COMMUNITY

4. I moduli in Access 2000/2003

VARIABILI, ASSEGNAZIONE, DECISIONI

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

Utilizzo delle Maschere in Microsoft Access

SELF SERVICE PAYMENT SOLUTIONS MINIPOS. manuale PER LA CONFIGURAZIONE E IL SETTAGGIO DEL MINIPOS. rev IT

ScuolaWEB - Registri. Utilizzo procedura «ScuolaWEB» per l accesso ai registro elettronici scolastici con procedura da WEB (internet)

PREVISIONALE. Manuale Utente 1.0

Access 2007 Colonna di ricerca

INTERROGAZIONE FATTURE FORNITORI ATTRAVERSO WEB

Laboratorio di PL/SQL

Manuale Relaxbanking.it. Operatore SUPER

Servizi e-business GESTIONE MATERIALI PIANIFICATI

Basi di Dati. Applicazioni web in PHP per l interrogazione di basi di dati. Esercitazione n. 4

Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione

GUIDA STUDENTE ALL USO DELLA PIATTAFORMA EXCHANGE E-LEARNING - Lotus Quickr

Questa versione di Solid Edge è stata certificata per l'uso con i seguenti sistemi:

PRESENTAZIONE DEI PIANI FORMATIVI AVVISI 1/17 2/17

In ogni tabella, cliccando sui titoli delle colonne, queste saranno ordinate alfabeticamente.

WEBGIS 1.0. Guida per l utente

Guida alla variazione dei dati e alla compilazione della Scheda per il mantenimento requisiti di iscrizione nel Registro regionale

GUIDA ALL UTILIZZO DEL. Portale Privato per la gestione e distribuzione di contenitori, chiavi, trasponder

Le query di comando e di servizio in Access

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query

PRESENTAZIONE DEI PIANI FORMATIVI AVVISI 1/17 2/17

Manuale Donatore bloodmanagement.it

AREA RISERVATA GESTORI e CLIENTI tamoil.it

FATTURAZIONE ELETTRONICA J-BRIDGE

Assessorato alla Sanità FIM. Flussi Informativi Ministeriali. Manuale Utente. Versione 1.0

Manuale SQL. Manuale SQL - 1 -

Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio

Laboratorio di Basi di Dati

e-procurement Hera QUICK REFERENCE MANUALE PER TRATTATIVE IN BUSTA CHIUSA

Infor LN [GUIDA INFOR LN] [GUIDA INFOR LN] Baltur S.p.A. Rev /2013. Guida all utilizzo del Gestionale Infor LN per le Agenzie Baltur

Transcript:

Sistemi di gestione di basi di dati Esercitazione 2 Trigger Connessione alla base di dati Connessione via browser Web all indirizzo http://cclix7.polito.it:8080/apex/ Login Per autenticarsi collegandosi all interfaccia Web, inserire i seguenti parametri. Nome utente: bdati[scegliere un valore compreso tra 1-100] Password: orac[scegliere un valore compreso tra 1-100] Ad esempio, collegandosi dalla macchina numero 23 del laboratorio, usare come username bdati23 e come password orac23. Una volta eseguito il login verrà visualizzata una finestra indicante il seguente menu. Materiale disponibile Sono disponibili alcuni script contenenti istruzioni SQL per svolgere le seguenti operazioni: 1. creazione della base di dati 2. creazione dei trigger 3. visualizzazione dei trigger 4. modifica della base dati per attivare i trigger. Gli script sono disponibili: sul sito web del corso http://dbdmg.polito.it/wordpress/teaching/sistemi-per-la-gestione-di-basi-di-dati/#laboratori-1 Gli script possono essere caricati nell interfaccia Web selezionando l icona SQL dal menu principale e successivamente la freccia dell icona Script SQL indicata nella seguente figura. Cliccare sulla freccia a fianco l icona di Script SQL e selezionare la voce carica per caricare lo script. Per eseguire gli script con Firefox, impostare la vista Dettagli e cliccare sul pulsante Esegui relativo allo script da eseguire. - 1 -

Comandi utili Cancellazione di un trigger: drop trigger nome_trigger; drop trigger nome_trigger ; Sostituzione (aggiornamento) di un trigger esistente (anziché cancellarlo e ricrearlo): CREATE OR REPLACE TRIGGER nometrigger Visualizzazione dei trigger generati: select trigger_name, triggering_event, table_name, status, description, action_type, trigger_body from user_triggers; Disabilitazione di un trigger esistente: ALTER TRIGGER triggername DISABLE; Visualizzazione degli errori dei trigger: select * from USER_ERRORS; Consigli Prima di ogni esercizio, caricare le relative tabelle eseguendo gli script script_db_es1.sql, script_db_es2.sql. script_db_es3.sql Per la creazione dei trigger, prestare attenzione alla sintassi e ai seguenti dettagli: assegnare un nome opportuno alle variabili, evitando parole chiave come MIN, MAX, dichiarare variabili diverse su righe diverse e non sulla stessa riga separate da virgola MyVarUno NUMBER; MyVarDue NUMBER; MyVarTre VARCHAR2(16); terminare il trigger con il carattere / come nello script create_triggers.sql (la creazione del trigger può andare a buon fine anche in assenza del carattere di terminazione); terminare le istruzioni con il carattere ; assegnare nuovi valori alle variabili con :=, es. UPDATE tablename SET varname=newvalue WHERE column=:new.attribute; IF A<3 OR A=3 THEN MyVar:='Tre'; ELSE IF A>3 AND A<5 THEN MyVar:='Quattro'; ELSE MyVar:='Altro'; END IF; END IF; Prima di iniziare l esercitazione si consiglia di eliminare gli eventuali trigger già presenti sull utente scelto, che potrebbero alterare i risultati degli esercizi proposti. Per verificare la presenza di trigger e poterli cancellare il percorso è Home->Browser Oggetti->Sfoglia->Trigger. N.B. Copiando e incollando porzioni di codice direttamente dal testo dell esercitazione in formato pdf al Browser Web prestare attenzione all eventuale conversione o codifica errata dei caratteri, che potrebbe generare il seguente errore: ora-00911: invalid character. - 2 -

Esercizio #1 Si consideri la seguente base di dati IMP ( EMPNO, DEPTNO, ENAME, JOB, SAL ) DIP ( DEPTNO, DNAME, LOC, MINSAL, MAXSAL ) Nel caso un dipartimento passi dal ruolo (attributo DNAME) di ACCOUNTING al ruolo di SALES, il salario per tutti gli impiegati del dipartimento viene incrementato di 100. Definire un trigger che implementi tale funzionalità. Lo svolgimento dell esercizio è strutturato nei seguenti passi: 1. Creare la base dati utilizzando lo script create_db_es1.sql 2. Creare il trigger, eventualmente mediante uno script. 3. Verificare il contenuto delle tabelle IMP e DIP. 4. Modificare il nome del dipartimento ACCOUNTING : UPDATE DIP set DNAME = 'SALES' where DNAME='ACCOUNTING'; 5. Verificare il contenuto delle tabelle IMP e DIP. Durante l esercitazione dovranno essere eseguiti i seguenti passi: scrivere il trigger; verificare l output generato (dettagli del risultato via Web, come nella figura di esempio a destra) in cui si osserva il risultato ottenuto. - 3 -

Esercizio #2 Si consideri la seguente base di dati relativa all emissione di biglietti (TICKETS) per voli aerei (FLIGHTS), per i quali gli utenti possono essere in possesso di tessere promozionali (CARDS). Ogni tessera acquista un credito (CREDITS) in miglia percorse corrispondenti al biglietto comprato con la tessera stessa. I possessori della tessera possono accedere a diverse fasce di sconti in base al totale delle miglia percorse con i voli dei biglietti comprati, in particolare fino a 30 mila miglia totali lo stato della tessera è SILVER, da 30 a 50 mila è GOLD e oltre a 50 mila è PREMIUM. I passaggi di stato scatenano una notifica (NOTIFY) al possessore della tessera. CARDS( CARDNO, NAME, STATUS) FLIGHTS( FLIGHTID, DEPARTURETIME, DEPARTURECITY, ARRIVALCITY, MILES) TICKETS( TICKETID, FLIGHTID, FLIGHTDATE, NAME, CARDNO) CREDITS( TICKETID, CARDNO, MILES) NOTIFY( CARDNO, NOTIFYNO, NOTIFYDATE, OLDSTATUS, NEWSTATUS, TOTALMILES) Si scriva il trigger necessario per gestire l'emissione di un nuovo biglietto, aggiornando opportunamento la base dati, come descritto in dettaglio di seguito. Quando il biglietto è emesso, se è associato al numero di tessera di un cliente (CARDNO IS NOT NULL), è necessario aggiornare le informazioni sulle miglia percorse. In particolare come prima operazione occorre aggiornare la tabella CREDITS con le informazioni appropriate. È necessario verificare se il cliente ha cambiato STATUS e aggiornarlo di conseguenza in CARDS. Lo status iniziale è SILVER e resta tale fino a quando il cliente non accumula un numero di miglia superiore a 30000. Quando le miglia totali accumulate sono comprese tra 30000 e 50000, lo STATUS viene aggiornato a GOLD. Se superano 50000 miglia percorse diviene PREMIUM (livello massimo). Se avviene una variazione di STATUS del cliente, occorre inserire nella tabella NOTIFY l'informazione necessaria per notificare al cliente la variazione di stato. Si noti che l'attributo NOTIFYNO è un contatore che deve essere incrementato di 1 ogni volta che si inserisce una nuova notifica per lo stesso cliente. È consigliabile scrivere un trigger per il primo passo, provarlo e poi aggiornarlo per soddisfare i requisiti del secondo passo, e infine integrarlo con le richieste del terzo ed ultimo passo. Passo 1 Quando il biglietto è emesso, se è associato al numero di tessera di un cliente (CARDNO IS NOT NULL), è necessario aggiornare le informazioni sulle miglia percorse. In particolare come prima operazione occorre aggiornare la tabella CREDITS con le informazioni appropriate. Passo 2 È necessario verificare se il cliente ha cambiato STATUS e aggiornarlo di conseguenza in CARDS. Lo status iniziale è SILVER e resta tale fino a quando il cliente non accumula un numero di miglia superiore a 30000. Quando le miglia totali accumulate sono comprese tra 30000 e 50000, lo STATUS viene aggiornato a GOLD. Se superano 50000 miglia percorse diviene PREMIUM (livello massimo). Passo 3 Se avviene una variazione di STATUS del cliente, occorre inserire nella tabella NOTIFY l'informazione necessaria per notificare al cliente la variazione di stato. Si noti che l'attributo NOTIFYNO è un contatore che deve essere incrementato di 1 ogni volta che si inserisce una nuova notifica per lo stesso cliente. Procedimento: 1. Creare la base dati utilizzando lo script create_db_es2.sql 2. Creare il trigger affinché soddisfi i requisiti del passo 1 3. Verificare il funzionamento del trigger inserendo due record nella tabella TICKETS un record che abbia CARDNO impostato a NULL, es. VALUES ('T02', 'RN12K', '01-MAR-07', 'PIPPO', NULL); un altro record con CARDNO uguale a un valore presente nella tabella CARDS, es. VALUES ('T03', 'RN12K', '02-APR-07', 'BILL', 50); 4. Verificare il contenuto delle tabelle e valutarne la correttezza - 4 -

select * from CREDITS; select * from TICKETS; 5. Aggiornare il trigger affinché soddisfi anche i requisiti del passo 2 6. Verificare il funzionamento del trigger inserendo dei record nella tabella TICKETS in modo da far cambiare status a un cliente inserire uno o più biglietti per voli molto lunghi o per clienti che hanno già altri voli, es. VALUES ('T04', 'RN12K', '03-MAY-07', 'BILL', 50); VALUES ('T05', 'RN12K', '03-MAY-07', 'BILL', 50); 7. Verificare il contenuto delle tabelle e valutarne la correttezza select * from CREDITS; select * from TICKETS; select * from CARDS; 8. Aggiornare il trigger affinché soddisfi anche i requisiti del passo 3 9. Verificare il funzionamento del trigger inserendo dei record nella tabella TICKETS in modo da far cambiare status a un altro cliente inserire uno o più biglietti per voli molto lunghi o per clienti che hanno già altri voli, es. VALUES ('T06', 'RN12K', '03-MAY-07', 'BILL', 50); VALUES ('T07', 'RN12K', '03-MAY-07', 'BILL', 50); 10. Verificare il contenuto delle tabelle e valutarne la correttezza select * from NOTIFY; select * from CREDITS; select * from TICKETS; select * from CARDS; Durante l esercitazione dovranno essere eseguiti i seguenti passi: verificare il risultato di ogni passo controllando i cambiamenti della base dati; scrivere il trigger completo. - 5 -

Esercizio #3 Si consideri la seguente base di dati: IMP ( EMPNO, ENAME, JOB, SAL ) SUMMARY ( JOB, NUM ) Verificare che siano state create correttamente le tabelle necessarie effettuando le seguenti query Select * from IMP; Select * from SUMMARY Nella tabelle SOMMARIO, il campo NUM indica il numero di impiegati in IMP che svolgono uno stesso lavoro. Si scrivano i trigger per mantenere la consistenza tra la tabella IMP e SOMMARIO in caso di: inserimento di un record in IMP aggiornamento del campo JOB in IMP - 6 -