Esercizi sulle viste 0. Assicuratevi di aver creato le vostre copie personali delle tabelle S, P, J, SPJ posticipando al nome della tabella le ultime 4 cifre del vostro login. Ad esempio, se queste 4 cifre fossero 4567, voi dovrete creare: S4567, P4567, J4567, SPJ4567. Popolate queste tabelle usando (e adattandoli opportunamente) gli script forniti sul sito del corso alla voce "Descrizione del Laboratorio". Gli esrcizi che seguiranno li farete usando la vostra copia delle tabelle. 1. Creare la vista good_suppliers. 2. Aggiornatela aumentando di 10 lo status del fornitore di Paris. Provate a vedere i risultati dell'aggiornamento su S e sulla vista. 1bis. Creare la vista good_suppliers2 con check option. 2bis. Aggiornatela diminuendo di 30 lo status del fornitore di Paris. 1ter. Creare la vista good_suppliers3 con read only. 2ter. Aggiornatela. Cosa si riesce a fare? 3. Creare la vista s#_city. 4. Provate a fare inserimenti, modifiche e cancellazioni tramite la vista e vedere il risultato su S. 5. Creare la vista status_city. 6. Come in 4: fare inserimenti, cancellazioni, modifiche tramite la vista. Cosa si riesce a fare? perche'? 5bis. Creare la vista status_city come segue: CREATE VIEW status_city2 AS SELECT DISTINCT status, city FROM S; 6 bis. Come in 6. Cosa si riesce a fare? perche'? 7. Creare la vista big_suppliers come segue: CREATE VIEW big_suppliers (s#, sname, p#, qty) AS SELECT s.s#, sname, p#, qty FROM s,spj WHERE s.s#=spj.s# and qty>100; 8. Provate a fare modifiche ai dati tramite la vista: ad esempio cancellate il fornitore S1. Esiste ancora in SPJ? E in S? Cosa si riesce a fare? perche'? 9. Provate a fare drop su SPJ; ora provate a usare la vista big_suppliers. 10. Create il seguente trigger: che cosa fa? CREATE OR REPLACE TRIGGER delete_from_big_suppliers INSTEAD OF DELETE ON BIG_SUPPLIERS FOR EACH ROW BEGIN DELETE FROM SPJ WHERE S#= :old.S#; DELETE FROM S WHERE S#= :old.S#; END; / P.S. La "/" serve a dire a SQL/PLUS che il blocco PL/SQL e' terminato. Se l'operazione di creazione del trigger da' errori inviate il comando "SHOW ERRORS;"