Riepilogo: in questo tutorial, imparerai come utilizzare Oracle identity column per definire facilmente una colonna numerica generata automaticamente per una tabella.

Introduzione alla colonna di identità Oracle

Oracle 12c ha introdotto un nuovo modo che consente di definire una colonna di identità per una tabella, che è simile alla colonnaAUTO_INCREMENT in MySQL oIDENTITY in SQL Server.

La colonna identity è molto utile per la colonna chiave primaria surrogata., Quando si inserisce una nuova riga nella colonna identity, Oracle genera automaticamente e inserisce un valore sequenziale nella colonna.

Per definire una colonna identity, si utilizza la clausola identity come mostrato di seguito:

Innanzitutto, la parola chiave GENERATED è obbligatoria.

In secondo luogo, è possibile specificare un’opzione per generare valori di identità:

  • GENERATED ALWAYS: Oracle genera sempre un valore per la colonna identity. Il tentativo di inserire un valore nella colonna identity causerà un errore.,
  • GENERATED BY DEFAULT: Oracle genera un valore per la colonna identity se non si fornisce alcun valore. Se si fornisce un valore, Oracle inserirà tale valore nella colonna identità. Per questa opzione, Oracle emetterà un errore se si inserisce un valore NULL nella colonna identità.
  • GENERATED BY DEFAULT ON NULL: Oracle genera un valore per la colonna identity se si fornisce un valore NULL o nessun valore.

In terzo luogo, è possibile avere un numero di opzioni per la colonna identità.,

  • START WITH initial_value controlla il valore iniziale da utilizzare per la colonna identity. Il valore iniziale predefinito è 1.
  • INCREMENT BY internval_value definisce l’intervallo tra i valori generati. Per impostazione predefinita, il valore dell’intervallo è 1.
  • CACHE definisce un numero di valori che Oracle dovrebbe generare in anticipo per migliorare le prestazioni. Questa opzione viene utilizzata per la colonna con un numero elevato di inserti.

Oracle identity column examples

Prendiamo alcuni esempi di utilizzo delle Oracle identity columns.,

A) GENERATO SEMPRE esempio

L’istruzione seguente crea una tabella denominata identity_demo che consiste di una colonna di identità:

La seguente dichiarazione inserisce una nuova riga nel identity_demo tabella:

Perché non si specifica un valore per il id colonna, Oracle automaticamente generata una sequenza di valore a partire dal 1.,

La seguente dichiarazione tenta di inserire un valore nel id colonna di identità:

Oracle rilascia un errore:

Perché la colonna id è stato definito come GENERATED ALWAYS non potrebbe accettare qualsiasi valore fornito.,

B) GENERATED BY DEFAULT example

Let’s change the id column to GENERATED BY DEFAULT:

The following statement inserts a new row into the identity_demo table:

It worked as expected.,

La seguente istruzione inserisce una nuova riga nella tabella identity_demo con un valore fornito per la colonna id:

In questo esempio, Oracle ha utilizzato il valore fornito e lo ha inserito nella tabella.,Primo, ricrea il identity_demo tabella di cui il id colonna è definita come identità colonna con il valore iniziale parte da 100:

Secondo, inserire una riga nel identity_demo tabella:

Terzo, query di dati identity_demo tabella:

Come si può vedere, il valore iniziale del id colonna è di 100, come specificato nella clausola identity.,

E) INCREMENTO PER opzione esempio

Innanzitutto, modificare la colonna id della tabellaidentity_demo che include entrambe le opzioniSTART WITH eINCREMENT BY.

Secondo, inserire due righe in un identity_demo tabella:

Terzo, query di dati della tabella per verificare gli inserimenti:

Come si può vedere, la prima riga è il valore di id 10. La seconda riga ha il valore id 20., Questo è ciò che abbiamo definito per la colonna id che dovrebbe iniziare con 10 e aumentare di 10 per la nuova riga.

Oracle identity column restrictions

Le colonne identity sono soggette alle seguenti restrizioni:

  • Ogni tabella ha una e una sola colonna identity.
  • Il tipo di dati della colonna identity deve essere un tipo di dati numerico. il tipo di dati definito dall’utente non può essere utilizzato con la clausola identity.
  • La colonna identity non è ereditata dall’istruzioneCREATE TABLE AS SELECT.,
  • La colonna identity non può avere un altro vincoloDEFAULT.
  • L’algoritmo di crittografia per le colonne di identità crittografate può essere dedotto quindi è necessario utilizzare un algoritmo di crittografia forte.
  • Il vincolo inline della colonna identity non deve entrare in conflitto con il vincolo NOT NULLe NOT DEFERRABLE dichiarato dalla clausola identity.

In questo tutorial, hai imparato come utilizzare la colonna Oracle identity che consente di definire facilmente una colonna numerica generata automaticamente per una tabella.,

  • Questo tutorial è stato utile?

Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *