• viste-with-check-option

    Viste con WITH CHECK OPTION

    Approfondimento sull’opzione WITH CHECK OPTION per le viste.

    Viste con WITH CHECK OPTION

    In un articolo precedente su questo blog dal titolo Le viste in Oracle è stata effettuata una prima panoramica delle viste, con particolare riferimento alla sintassi Oracle. Abbiamo visto che la sintassi per creare una vista in Oracle è la seguente:

    Con l’opzione WITH CHECK OPTION, se la subquery include una clausola WHERE, viene impedito l’inserimento di righe che non sarebbero visibili nella vista o update che causerebbero che una riga scompaia dalla vista. Per impostazione predefinita, questa opzione non è abilitata.

    Ad esempio, se vogliamo creare una vista di tutti gli impiegati che lavorando in un dipartimento di Seattle, possiamo utilizzare il seguente script:

    E andando ad effettuare un’interrogazione sulla vista

    otteniamo il seguente risultato (18 record):

    vista-impiegati-seattle

    I dipartimenti che hanno sede a Seattle sono (in ordine crescente):

    • 10,
    • 30
    • 90
    • 110
    • 120

    Quindi, ad esempio, se provassimo ad inserire nella vista un impiegato con department_id = 20 (che non è un dipartimento di Seattle), l’inserimento sulla tabella andrebbe a buon fine, ma un’interrogazione sulla vista non mostrerebbe il nuovo record, perché vengono mostrati solo quelli appartenenti a dipartimenti di Seattle.

    Se si vuole avere il comportamento da parte di Oracle tale che l’inserimento sulla vista che viola la WHERE condition della vista sollevi un errore, occorre creare la vista con WITH CHECK OPTION. Pertanto, possiamo ricreare la vista con l’opzione WITH CHECK OPTION alla fine dello script.

    Con questa opzione, un eventuale inserimento di un impiegato con department_id = 20 (che non è Seattle), fallisce con errore ORA-01733: virtual column not allowed here.

     

    Giulio Cantali – IT Consultant

    Creatore di Database Master, il primo percorso per diventare esperti di database

Lascia un commento

Se vuoi condividere la tua opinione, lascia un commento

Puoi usare questi tag e attributi: HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">