Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.

Slides:



Advertisements
Presentazioni simili
CREAZIONE UTENTE SU ORACLE1 Pagina delle risorse: crea utente oracle ( Password:… Dora in poi, in questi lucidi,
Advertisements

Sicurezza e concorrenza nelle basi di dati
Stored Procedure Function Trigger
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
PHP.
1 Comandi per la manipolazione dei dati. 2 Tipi di comandi INSERT UPDATE DELETE COMANDI COMANDI 2.
1 Basi di dati attive. 2 Sommario Preliminari Approcci architetturali Linguaggi per la specifica di regole – Eventi – Condizioni – Azioni – Ulteriori.
Biglietti e Ritardi: schema E/R
Università di Modena e Reggio Emilia 1 DB unimo Decomposizione Schemi e Trigger.
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Asserzioni, Viste & Triggers
Basi di dati attive Dispongono di un sottosistema integrato per definire e gestire regole di produzione (regole attive) Regole di tipo: Evento-Condizione-Azione.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
SQL Structured Query Language
Elementi di PL/SQL.
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
Basi di dati attive Paolo Atzeni.
Nataliya Rassadko SQL: Lezione 8 Nataliya Rassadko
Aspetti sistemistici dellSQL. SQL environment Un SQL environment è un framework dove esistono dati e possono aversi istruzioni SQL eseguite su questi.
SQL Per la modifica di basi di dati
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Esercizio zSi consideri la tabella Panorami, memorizzata in una base di dati Oracle 8i. Tale tabella contiene i seguenti campi: yId, di tipo NUMBER yNome,
SQL1 Modifica dei dati inserimento cancellazione modifica.
SQL: Amministrazione e Viste
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Transazioni.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Progetto: memorizzazione dello stato nel database Accesso Nome Anno N. accediNegozio.html negozio Seleziona oggetto1 oggetto2 oggetto conferma.
Basi di Dati e Sistemi Informativi
Basi di dati attive. Una base di dati che offre regole attive Si parla normalmente di trigger Trigger presentati rapidamente in precedenza Si vogliono.
BIOINFO3 - Lezione 51 INSERIMENTO DEI DATI Visto come si creano le tabelle (sinora tristemente vuote), cominciamo ad occuparci di come riempirle con dei.
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
Programmazione della shell pt.2
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Operazione immissione persona Vogliamo implementare il seguente progetto: Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore.
CREAZIONE UTENTE SU ORACLE1 Pagina delle risorse: crea utente oracle ( D’ora in poi, in questi lucidi, il vostro utente oracle.
ESERCIZIO PL/SQL e PSP.
FUNZIONI Dichiarazione: Definizione:
Pagine ASP parte 3 I data base Stefano Schacherl.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Education & Training Training per Microsoft Access 97 Perché Education & Training ? Perché StartPoints crede nell’importanza strategica delle Risorse Umane.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi.
Esercizio ODBC. Configurare il driver ODBC Start  Control Panel  Administrative Tools Aprire: Data Source(ODBC) User DSN  Add…. Selezionare il driver.
MySQL Database Management System
Esercizio ODBC. Configurare il driver ODBC Start  Control Panel  Administrative Tools Aprire: Data Source(ODBC) User DSN  Add…. Selezionare il driver.
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Esercizio ODBC Roberto Pecchioli, Nicola Salotti, Massimiliano Sergenti - Gruppo Admin.
Operazione immissione persona Vogliamo implementare il seguente progetto: Immissione persona Anno N. Nome Cognome Errore:.... Controllo e Immissione Errore.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
Elementi di PL/SQL. Pl/Sql Il PL/SQL (Procedural Language/Structured Query Language) è un linguaggio di programmazione procedurale di Oracle che costituisce.
PL/SQL Procedural Language/SQL estensione procedurale del linguaggio SQL.
Esercitazione 3 Utilizzo di un array per la visualizzazione dei dati.
ESERCIZIO PL/SQL e PSP. LO SCHEMA create table studenti ( nome VARCHAR2(15) not null, cognome VARCHAR2(15) not null, eta NUMBER );
Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.
Elementi di statistica con R e i database LEZIONE 2 Rocco De Marco rocco.demarco(a)an.ismar.cnr.it Ancona, 12 Aprile 2012.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione.
Progetto: memorizzazione dello stato nel database Accesso Nome Anno N. accediNegozio.html negozio Seleziona oggetto1 oggetto2 oggetto conferma.
Progetto: memorizzazione dello stato nel database
Transcript della presentazione:

Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica –Auditing: Sicurezza Statistiche –Valori derivati memorizzati –Facilitare lo sviluppo di applicazioni tramite RAD –Altro

Operazioni scatenanti select... from... where insert into tabella [ ( [ colonna /,]* ) ] values ( [expr /, ]* ) insert into tabella [ ( [ colonna /,]* ) ] subquery update table [nome] set [ column = expr /, ]* [where condizione] delete [ from ] tabella where condizione

Sintassi Sintassi: create [or replace] trigger nome {before | after} [ {delete | insert | update [of [column /,]* } /or]* on tabella [referencing { old as nome | new as nome }*] [for each row] [when (condition)] blocco Referencing e when solo se for each row ; per default, la vecchia riga è :old e la nuova è :new nel blocco, old e new nella condizione

Esempio Siano prenotazioni e agenzie due tabelle legate dall’attributo agenzia chiave esterna in prenotazioni. Creo una directory ese5bdl e vi copio i file in ~ghelli/bdl07/esercizi/ese5/ Mi collego al server Oracle che ho scelto e compilo nell’ordine: –create.sql –ese5.sql –trigger.sql prenotazioniagenzie nomeAgenzia

Esempio Modifico menuAgenzie.html sostituendo YYY con il mio nome utente di Oracle Copio menuAgenzie.html nella directory ~/public_html Inserisco dati accedendo la pagina, ie.html

trigger.sql (1/3) Il trigger alla prima prenotazione crea l’agenzia, per le successive ne aggiorna il totale di spese e di prenotazioni

trigger.sql (2/3) create or replace trigger t1 before insert on prenotazioni for each row declare conta number; begin select count(*) into conta from agenzie where nomeAgenzia = :new.agenzia;

trigger.sql (3/3) if (conta = 0) then insert into agenzie values (:new.agenzia,1,:new.spesa); else update agenzie set numPrenotazioni = numPrenotazioni + 1, spesaTot = spesaTot + :new.spesa where nomeAgenzia = :new.agenzia;

trigger2.sql (1/3) Il trigger estende trigger.sql per controllare che ogni agenzia non abbia più di tre prenotazioni (limite massimo consentito), nel caso solleva un’eccezione

trigger2.sql (2/3) create or replace package p_ese5 as … troppePrenotazioni exception; end p_ese5; create or replace trigger t1 before insert on prenotazioni for each row declare conta number; prenota number; begin select count(*) into conta from agenzie where nomeAgenzia = :new.agenzia;

trigger2.sql (3/3) else begin select numPrenotazioni into prenota from agenzie where nomeAgenzia = :new.agenzia; if (prenota = 3) then raise p_ese4.troppePrenotazioni; end if; update agenzie set numPrenotazioni = numPrenotazioni + 1, spesaTot = spesaTot + :new.spesa where nomeAgenzia = :new.agenzia; end;

Eccezione e trigger create or replace package p_ese5 as procedure prenota(…); troppePrenotazioni exception; end p_ese5; create or replace package body p_ese5 as procedure prenota(…) begin … insert into prenotazioni values (…) … exception when p_ese5.troppePrenotazioni then …do something… end prenota; end p_ese5;

Esercizi Realizzare una procedura per la cancellazione delle prenotazioni Realizzare un trigger che si occupi di eliminare le agenzie dal database quando non esistono più prenotazioni associate Realizzare una pagina di immissione dati più ricca, che consenta di selezionare il nome dell’agenzia tra quelle esistenti nel database

Limitazione Limitazione: non è possibile modificare la tabella che ha fatto partire il trigger o la chiave di una tabella coinvolta nel comando, se il trigger è for each row ( insert into fa eccezione)

TRIGGER ILLECITO create or replace trigger trigDelStat after delete on prenota for each row declare conta number; begin select count(*) into conta from prenota where login = :old.login; if conta = 0 then delete from utenti where login = :old.login; else update utenti set oreTotali = oreTotali - 1 where login = :old.login; end if; end;

VERSIONE ACCETTATA create or replace trigger trigDelRow after delete on prenota for each row begin update utenti set oreTotali = oreTotali - 1 where login = :old.login; end;

VERSIONE ALTERNATIVA create or replace trigger tridel after delete on prenota begin delete utenti u where not exists (select * from prenota where login = u.login); end;