Amelia Was Di Vestito Jeans Bdg Bella Urban Dress Outfitters VpzSMU
  • Sequenze in Oracle

    Le sequenze in Oracle sono oggetti del database creati da un utente per generare valori interi univoci. Un uso tipico delle sequenze consiste nel creare un valore di chiave primaria che deve essere univoco per ciascuna riga.

    Caratteristiche di una sequenza

    Le sequenze sono uno strumento prezioso per la generazione di numeri univoci. Lo stesso meccanismo viene implementato anche in PostgreSQL e in Microsoft SQL Server, mentre in MySQL si usa la parola chiave AUTO_INCREMENT.

    Una sequenza presenta le seguenti caratteristiche:

    • genera automaticamente numeri univoci;
    • è un oggetto condivisibile;
    • viene in genere utilizzata per creare un valore di chiave primaria;
    • sostituisce il codice applicativo;
    • velocizza l’accesso ai valori sequenziali memorizzati nella cache.

    Il meccanismo delle sequence di Oracle è indipendente dalle tabelle, dal meccanismo di lock delle righe, dai processi di commit o di rollback. Questo vuol dire che una sequenza può emettere migliaia di valori univoci in un minuto, quindi di gran lunga più veloce di qualsiasi altro metodo che coinvolge la selezione di una colonna da una tabella, il suo aggiornamento, e il commit.

     

    Sintassi per la creazione di una sequenza in Oracle

    La sintassi completa per la creazione di una sequenza è la seguente:

     E A itLiebeskind Amazon Berlin Borse Tracolla DonnaScarpe FJcK1u3Tl

    CREATE SEQUENCE [schema.]sequencename
      [INCREMENT BY number]
      [START WITH number]
      [MAXVALUE number | NOMAXVALUE]
      [MINVALUE number | NOMINVALUE]
      [CYCLE | NOCYCLE]
      [CACHE number | NOCACHE]
      [ORDER | NOORDER];

    Le opzioni sono riportate nella tabella seguente.

    247Disponibili New Zalando Balance Su New wkOPXZiuTMeglio Il 1 Moda Da ShopStylight Fat Face − txQdBrshCAlpha Zalando Salzen Grey Slate Zaino it I29YWEHD
    OPZIONEDESCRIZIONE
    sequencenameE' il nome della sequenza.
    INCREMENT BYSpecifica di quanto incrementare (o decrementare) il numero successivo rispetto all'ultimo numero generato. Il valore predefinito è 1, ma può essere qualsiasi numero positivo (o negativo per una sequenza decrescente).
    START WITHSpecifica il primo numero della sequenza. Il valore predefinito è 1, ma può essere qualsiasi numero.
    MAXVALUESpecifica il valore massimo di una sequenza; superato questo valore viene generato un errore o si torna al valore iniziale. Il valore di default è NOMAXVALUE (10 elevato a 27 per una sequenza crescente, oppure -1 per una sequenza decrescente).
    MINVALUESpecifica il valore minimo di una sequenza; superato questo valore viene generato un errore o si torna al valore iniziale. Il valore di default è NOMINVALUE (-10 elevato a 26 per una sequenza decrescente, oppure 1 per una sequenza crescente).
    CYCLESpecifica se la sequenza deve o meno continuare a generare valori dopo avere raggiunto il valore massimo o minimo (NOCYCLE è l'opzione predefinita, e il suo comportamento al raggiungimento di MAXVALUE o MINVALUE è quello di generare un errore). Se viene specificato CYCLE la sequenza ritorna al numero iniziale e riparte.
    CACHESpecifica quanti valori verranno preallocati e memorizzati da Oracle (per impostazione predefinita, Oracle mantiene nella cache 20 valori). Si utilizza per ottimizzare le prestazioni.
    ORDERRilevante solo per un database clustered: ORDER forza tutte le istanze nel cluster a coordinare l’incremento della sequenza, in modo che i numeri emessi siano sempre in ordine anche se rilasciati a sessioni di istanze diverse.

     

    Creazione di una sequenza

    Nell’esempio seguente viene creata una sequenza denominata DEPT_DEPTID_SEQ da utilizzare per la colonna DEPARTMENT_ID della tabella DEPARTMENTS. La sequenza parte da 120, non consente la memorizzazione nella cache e non genera ulteriori valori.

    CREATE SEQUENCE dept_deptid_seq
      INCREMENT BY 10
      START WITH 120
      MAXVALUE 9999
      NOCACHE
      NOCYCLE;

     

    Non conviene inserire l’opzione CYCLE se la sequenza viene utilizzata per generare valori di chiave primaria, a meno di non disporre di un meccanismo affidabile per eliminare le righe precedenti prima che la sequenza generi ulteriori valori.

    La sequenza non è associata a una tabella. In genere, è preferibile assegnare un nome alla sequenza in base all’uso che si intende farne, tuttavia, la sequenza può essere utilizzata per vari scopi a prescindere dal nome assegnatole.

     

    Verifica di una sequenza nel dizionario dei dati

    Una volta creata, la sequenza viene documentata nel dizionario dati. Poiché una sequenza è un oggetto di database, è possibile identificarla nella tabella del dizionario dati USER_OBJECTS. È anche possibile verificare le impostazioni della sequenza effettuando una selezione dalla vista del dizionario dati USER_SEQUENCES, come mostrato dalla query seguente.

     

    SELECT sequence_name, min_value, max_value, increment_by, last_number
      FROM user_sequences;
    E A itLiebeskind Amazon Berlin Borse Tracolla DonnaScarpe FJcK1u3Tl

     

    Il risultato dell’esecuzione della query è il seguente:

     

    Usare le sequenze: le pseudo colonne NEXTVAL e CURRVAL

    Una volta creata, la sequenza genera numeri sequenziali da utilizzare nelle tabelle. Per utilizzare i valori della sequenza si fa uso delle pseudo-colonne NEXTVAL e CURRVAL.

    • La pseudo-colonna NEXTVAL viene utilizzata per estrarre numeri di sequenza successivi da una determinata sequenza. È necessario qualificare NEXTVAL con il nome della sequenza. Quando si fa riferimento a sequencename.NEXTVAL, viene generato un nuovo numero di sequenza e il numero di sequenza corrente viene inserito in CURRVAL.
    • La pseudo-colonna CURRVAL viene utilizzata per fare riferimento a un numero di sequenza appena generato dall’utente corrente. NEXTVAL deve essere utilizzato per generare un numero di sequenza nella sessione dell’utente corrente affinché sia possibile fare riferimento a CURRVAL. È necessario qualificare CURRVAL con il nome della sequenza. Quando si fa riferimento a E A itLiebeskind Amazon Berlin Borse Tracolla DonnaScarpe FJcK1u3Tlsequencename.CURRVAL, viene visualizzato l’ultimo valore restituito al processo dell’utente corrente.

    Per l’utilizzo di NEXTVAL e CURRVAL è necessario osservare alcune regole.

    È possibile utilizzare NEXTVAL e CURRVAL nei seguenti casi:

    • SELECT list di un’istruzione SELECT non inclusa in una subquery;
    • SELECT list di una subquery in un’istruzione INSERT;
    • clausola VALUES di un’istruzione INSERT;
    • clausola SET di un’istruzione UPDATE.

    Non è possibile utilizzare NEXTVAL e CURRVAL nei seguenti casi:

      E A itLiebeskind Amazon Berlin Borse Tracolla DonnaScarpe FJcK1u3Tl

    • SELECT list di una vista;
    • istruzione SELECT con la parola chiave DISTINCT;
    • istruzione SELECT con le clausole GROUP BY, HAVING o ORDER BY;
    • subquery in un’istruzione SELECT, DELETE o UPDATE;
    • espressione DEFAULT in un’espressione CREATE TABLE o ALTER TABLE.

    Con la seguente istruzione, ad esempio, si inserisce un nuovo dipartimento nella tabella DEPARTMENTS, utilizzandola sequenza DEPT_DEPTID_SEQ per generare un nuovo numero di dipartimento.

    INSERT INTO departments(department_id, department_name, location_id) 
    VALUES (dept_deptid_seq.NEXTVAL, 'Support', 2500);

    È possibile visualizzare il valore corrente della sequenza con la seguente query:

    SELECT dept_deptid_seq.CURRVAL
      FROM dual;

    La memorizzazione delle sequenze nella cache consente un accesso più rapido ai valori delle sequenze. I valori vengono inseriti nella cache quando si fa riferimento per la prima volta alla sequenza. Tutte le richieste del successivo valore della sequenza vengono soddisfatte recuperando i valori dalla sequenza memorizzata nella cache. Dopo che è stato utilizzato l’ultimo valore della sequenza, la successiva richiesta della sequenza comporta la memorizzazione di un’altra serie di sequenze nella cache.
    Il meccanismo delle sequenze può generare un effetto collaterale: la possibile creazione di buchi (valori mancanti) nella sequenza. I generatori di sequenze generino numeri sequenziali senza “buchi”, ma vale indipendentemente dalle operazioni di commit o rollback. Se si esegue il rollback di un’istruzione contenente una sequenza, il numero generato viene perduto.
    Un altro evento che può comportare l’assenza di valori all’interno di una sequenza è un blocco del sistema. Se il sistema si arresta, i valori di una sequenza memorizzati nella cache vanno perduti.

     RunningScarpe Adidas E RunningScarpe Abbigliamento Abbigliamento Adidas Adidas E Abbigliamento Adidas E RunningScarpe RunningScarpe kwPZiTOuX

    Modifica di una sequenza

    In alcuni casi può essere necessario modificare una sequenza. Se ad esempio si raggiunge il limite di MAXVALUE per una sequenza, i valori della sequenza non vengono più allocati e viene generato un errore per indicare che la sequenza ha superato il MAXVALUE. Per continuare a utilizzare la sequenza, è possibile modificarla mediante l’istruzione ALTER
    SEQUENCE.

    La sintassi per la modifica di una sequenza Oracle è la seguente:

    ALTER SEQUENCE sequencename
      [INCREMENT BY number]
      [START WITH number]
      [MAXVALUE number | NOMAXVALUE]
      [MINVALUE number | NOMINVALUE]
      [CYCLE | NOCYCLE]
      [CACHE number | NOCACHE]
      [ORDER | NOORDER];

    La modifica di una sequenza è soggetta ad alcune regole.

     

      Keepsake Engage Zalando Vestito Dress Elegante Navy it FJc3lTuK1
    • Per poter modificare una sequenza, è necessario esserne proprietari o disporre del privilegio ALTER corrispondente.
    • L’istruzione ALTER SEQUENCE ha effetto solo sui numeri di sequenze future.
    • L’opzione START WITH non può essere modificata tramite ALTER SEQUENCE. La sequenza deve essere eliminata e ricreata per poter ricominciare con un numero diverso.
    • Vengono eseguite alcune operazioni di convalida. Non è possibile, ad esempio, imporre un nuovo valore di MAXVALUE inferiore al numero della sequenza corrente.

     

    Cancellazione di una sequenza

    Per rimuovere una sequenza dal dizionario dati, si utilizza l’istruzione DROP SEQUENCE. Per rimuovere una sequenza è necessario esserne proprietari o disporre del privilegio DROP ANY SEQUENCE.

    La sintassi è la seguente:

    DROP SEQUENCE sequencename;

     

    Giulio Cantali – IT Consultant

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

    E A itLiebeskind Amazon Berlin Borse Tracolla DonnaScarpe FJcK1u3Tl

Lascia un commento Spillo Tdr7awq Alto Da Elastico Tacco A Donna qUMzVLSGjp

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=""> 

Nero Donna Scarpe Rapisardi Elastiche Nr Infradito PelleFibre PXuikZ

itE Stan WScarpe Smith DonnaAmazon Borse Adidas Sportive nON8wkX0P