Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoNorma Castaldo Modificato 10 anni fa
1
Sequence
2
CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE | NOCACHE]; Automaticamente crea numeri sequenziali
3
CREARE UNA SEQUENCE INCREMENT BY n specifica lintervallo fra i numeri generati dalla sequence (se omesso lincremento è di 1) START WITH n indica il primo numero che verrà generato dalla sequence (se omesso la sequence parte da 1) MAXVALUE n indica il valore massimo che la sequence può generare NOMAXVALUE specifica 10^27 per sequence ascendenti e -1 per sequence discendenti MINVALUE n indica il minimo valore della sequence NOMINVALUE specifica 1 per le sequence ascendenti e -10^26 per sequence discendenti CYCLE | NOCYCLE specifica se la sequence continuerà a generare valori dopo il raggiungimento del massimo o minimo valore CACHE | NOCACHE specifica quanti valori Oracle server prealloca e tiene in memoria (come default Oracle server tiene 20 valori in cache)
4
CREARE UNA SEQUENCE Creare una sequenza DEPT_DEPTID_SEQ che deve essere usata come chiave primaria della tabella DEPARTMENTS. CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE; Non usare lopzione CYCLE quando si creano valori per la chiave primaria.
5
CREARE UNA SEQUENCE È possibile controllare i valori della sequence nella tabella USER_SEQUENCES del dizionario dati. SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequence; Il campo LAST_NUMBER visualizza il prossimo numero della sequence disponibile se viene specificata lopzione NOCACHE
6
NEXTVAL E CURRVAL sono pseudocolonne NEXTVAL restituisce il prossimo valore della sequence. Restituisce un unico valore ogni volta che è richiamata, anche con utenti differenti – sequence.NEXTVAL CURRVAL restituisce il valore corrente della sequence, lultimo valore generato per la sequence – sequence.CURRVAL quando di chiama NEXTVAL viene generato un nuovo numero per la sequence e viene posto nella CURRVAL
7
Quando usare NEXTVAL e CURRVAL nella SELECT list di uno statement SELECT che non è una subquery o parte di essa nella SELECT list di una subquery quando è in un INSERT nella clausola VALUES di una INSERT nella clausola SET di un UPDATE
8
Quando NON usare NEXTVAL e CURRVAL nella SELECT list di una vista nella SELECT con la keyword DISTINCT nella SELECT con GROUP BY, HAVING o ORDER BY nelle subquery in SELECT, DELETE, UPDATE statement nellespressione DEFAULT in CREATE TABLE o ALTER TABLE
9
USARE UNA SEQUENCE INSERT INTO departments (department_id, department_name, location_id) VALUES (dept_deptid_seq.NEXTVAL, Support, 2500); - inserisce nel campo department_id i valori della sequence. SELECT dept_deptid_seq.CURRVAL FROM dual; - visualizza il valore corrente della sequence
10
USARE UNA SEQUENCE mettere i valori della sequence in cache permette di accedere più velocemente ai valori. La cache viene popolata quando viene fatto il primo accesso alla sequence. Ai successivi riferimenti verrà fatto accesso alla cache. possono verificarsi vuoti nella generazione dei valori quando: - quando viene fatto un rollback di uno statement contente una sequence - il sistema va in crash e vengono persi i valori che la sequence mette in cache - la sequence è usata in unaltra tabella
11
MODIFICARE UNA SEQUENCE è possibile modificare il valore di incremento, il massimo e minimo valore, lopzione cycle e lopzione cache ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Quando si supera il MAXVALUE non verranno creati altri valori e verrà generato un errore che indica che la sequence eccede il MAXVALUE. Per continuare ad usare la sequence occorre quindi modificarla con il comando di ALTER SEQUENCE.
12
COME MODIFICARE UNA SEQUENCE per modificare una sequence occorre essere il proprietario o avere i privilegi di ALTER per la sequence solo i numeri che verranno generati successivamente saranno affetti dalle modifiche fatte non è possibile modificare il parametro di START WITH, la sequence deve essere cancellata e ricreata per farla ricominciare da un numero differente è possibile fare qualche controllo. Per esempio non è possibile impostare un nuovo MAXVALUE minore del valore corrente
13
CANCELLARE UNA SEQUENCE DROP SEQUENCE dept_deptid_seq; cancella la sequence dal dizionario dati per cancellare la sequence occorre essere il proprietario o avere il privilegio DROP ANY SEQUENCE
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.