Colonna di identità Oracle

Colonna di identità Oracle
In questo tutorial, imparerai come usare e lavorare con la colonna Oracle Identity per definire una colonna numerica autogenerata in una tabella.

Se hai mai lavorato con i database MySQL, potresti avere familiarità con la colonna Auto_InCrement. In Oracle, utilizziamo una colonna di identità per consentire al motore del database di generare automaticamente un valore numerico per ciascuna riga aggiunta alla tabella ad un intervallo specifico.

Colonna di identità Oracle

La colonna Oracle Identity è disponibile nella versione 12c e in alto. La colonna di identità genera automaticamente un valore numerico per ogni riga inserita nella tabella.

Poiché il motore del database genera un valore univoco per ogni riga aggiunta alla tabella, funziona come una chiave primaria surrogata nel database.

In Oracle, definiamo una colonna di identità usando la sintassi seguente:

Generato [sempre | Per impostazione predefinita [su null]]
Come identità [(Identity_options)]

I parametri dell'istruzione, come visto sopra, includono quanto segue:

  1. Generato: iniziamo con la parola chiave generata, in cui i valori sono generati automaticamente dal motore del database.
  2. Sempre - allo stesso modo, questo valore assicura che solo il motore del database possa aggiungere valori alla colonna. Il tentativo di aggiungere valori manualmente comporterà un errore.
  3. Per impostazione predefinita - questo causerà un errore se si fornisce un valore nullo alla colonna.
  4. Per impostazione predefinita su null - Oracle genererà un valore invece di restituire un errore sull'input NULL.
  5. Come identità - questo definisce che questa è una colonna di identità.
  6. Inizia con il valore: definisce il valore iniziale utilizzato per la colonna di identità. Per impostazione predefinita, il valore inizierà a 1.
  7. Incremento per valore: definisce il valore dell'intervallo tra i valori generati. Per impostazione predefinita, la funzione utilizzerà un intervallo di 1.
  8. Cache: definisce il numero di valori che il motore del database genererà in anticipo per aumentare le prestazioni. Questa opzione è utile quando è necessario autogenerare molti record.

Colonne di identità Oracle

Scopriamo esempi di base su come utilizzare la colonna Identity nei database Oracle.

Oracle Crea la colonna di identità

Il modo più comune e consigliato di creare una colonna di identità in una tabella è durante la creazione.

Un esempio di seguito dimostra come possiamo raggiungere questo obiettivo:

Crea prodotti da tavolo (
Numero Product_id generato sempre come identità,
Product_name Varchar2 (255) non null,
Numero di quantità non controllo null (quantità> 0),
numero di prezzo,
Chiave primaria (Product_id)
);

L'istruzione sopra crea una tabella chiamata prodotti con una colonna di identità di Product_id.

Possiamo quindi inserire alcuni record di esempio nella tabella come:

INSERT IN Products (Product_name, quantità, prezzo) Valori ('Microsoft Volterra', 0, 599);

In questo caso, non abbiamo specificato il valore per la colonna Product_id nella tabella sopra. Ciò consentirà al motore del database di generare valori per le colonne aggiunte automaticamente. Come accennato, Oracle inizierà al valore di 1 e incremento di 1 per ogni riga aggiunta.

Come accennato, il tentativo di aggiungere un valore per la colonna Identity comporterà un errore:

INSERT IN PRODUCTS (Product_id, Product_Name, quantità, prezzo) Valori (2, "Microsoft Volterra", 10, 599);

Errore risultante:

Errore SQL: ORA-32795: Impossibile inserire in una colonna di identità sempre generata

Questo perché la colonna di identità è impostata per generare sempre.

Esempio 2 - Identità Oracle generata per impostazione predefinita.

Possiamo anche modificare la colonna di identità dalla generata sempre alla generata per impostazione predefinita come:

Crea prodotti da tavolo (
Numero Product_id generato per impostazione predefinita come identità,
Product_name Varchar2 (255) non null,
Numero di quantità non controllo null (quantità> 0),
numero di prezzo,
Chiave primaria (Product_id)
);

In questo caso, possiamo aggiungere manualmente un valore per la colonna Product_id.

INSERT IN PRODUCTS (Product_id, Product_Name, quantità, prezzo) Valori (1, 'Microsoft Volterra', 0, 599);

Allo stesso modo, se non forniamo un valore per la colonna, il motore del database lo genererà automaticamente.

Non è possibile inserire un valore nullo in una colonna di identità come definito sopra.

Esempio 3
Possiamo anche definire l'inizio e i valori di intervallo durante la creazione della tabella come mostrato:

Crea prodotti da tavolo (
Numero Product_id generato per impostazione predefinita come identità inizia con 10 incremento di 2,
Product_name Varchar2 (255) non null,
Numero di quantità non controllo null (quantità> 0),
numero di prezzo,
Chiave primaria (Product_id)
);

In questo caso, i valori autogenerati inizieranno a dieci e incremento di 2 per ogni nuova riga aggiunta alla tabella.

Punti da notare

Sebbene una colonna di identità fornisca una forte comodità quando si lavora con un set di dati di grandi dimensioni, viene fornito con restrizioni. Questi includono:

  1. Una tabella può contenere una sola colonna di identità.
  2. Una colonna di identità non può contenere un vincolo predefinito.
  3. Una tabella di creazione non può ereditare una colonna di identità come istruzione Select.
  4. Il valore di una colonna di identità può essere solo un tipo numerico.

Conclusione

In questo post, hai scoperto i vari metodi e tecniche di lavoro con la colonna Identity nei database Oracle.