Wenn Sie jemals mit MySQL -Datenbanken gearbeitet haben, sind Sie möglicherweise mit der Spalte auto_increment vertraut. In Oracle verwenden wir eine Identitätsspalte, damit die Datenbankmotor in einem bestimmten Intervall automatisch einen numerischen Wert für jede Zeile generiert wird, die der Tabelle hinzugefügt wurde.
Oracle Identity -Spalte
Die Oracle Identity -Spalte ist in Version 12c und oben verfügbar. Die Identitätsspalte generiert automatisch einen numerischen Wert für jede in die Tabelle eingefügte Zeile.
Da die Datenbank -Engine für jede Zeile, die der Tabelle hinzugefügt wurde, einen eindeutigen Wert generiert.
In Oracle definieren wir eine Identitätsspalte unter Verwendung der folgenden Syntax:
Generiert [immer | Standardmäßig [auf Null]]]
Als Identität [(Identity_Options)]
Die Anweisungsparameter enthalten, wie oben zu sehen, Folgendes:
Oracle Identity -Spalten
Lassen Sie uns grundlegende Beispiele für die Verwendung der Identitätsspalte in Oracle -Datenbanken entdecken.
Oracle -Identitätsspalte erstellen
Die häufigste und empfohlene Art, eine Identitätsspalte für eine Tabelle zu erstellen, ist während der Erstellung.
Ein Beispiel unten zeigt, wie wir dies erreichen können:
Tischprodukte erstellen (
product_id nummer immer als identität generiert,
product_name varchar2 (255) nicht null,
Mengenzahl nicht NULL -Überprüfung (Menge> 0),
Preisnummer,
Primärschlüssel (product_id)
);
Die obige Anweisung erstellt eine Tabelle namens Produkte mit einer Identitätsspalte von product_id.
Wir können dann einige Beispieldatensätze in die Tabelle einfügen wie:
Einfügen in Produkte (product_name, Menge, Preis) Werte ('Microsoft Volterra', 0, 599);
In diesem Fall haben wir den Wert für die Spalte product_id in der obigen Tabelle nicht angegeben. Dadurch kann die Datenbankmotor Werte für die hinzugefügten Spalten automatisch generieren. Wie bereits erwähnt, startet Oracle mit dem Wert von 1 und steigt für jede hinzugefügte Zeile um 1 an.
Wie bereits erwähnt, führt der Versuch, einen Wert für die Identitätsspalte hinzuzufügen, zu einem Fehler:
In Produkte (product_id, product_name, Menge, Preis) Werte (2, 'Microsoft Volterra', 10, 599) einfügen;
Resultierender Fehler:
SQL-Fehler: ORA-32795: kann nicht in eine generierte Identitätsspalte einfügen
Dies liegt daran, dass die Identitätsspalte so eingestellt ist, dass es immer generiert wird.
Beispiel 2 - Die standardmäßige Oracle -Identität erzeugt.
Wir können auch die Identitätsspalte von Generation immer auf generiert ändern, die standardmäßig generiert wurden, als:
Tischprodukte erstellen (
product_id nummer, die standardmäßig als Identität generiert wird,
product_name varchar2 (255) nicht null,
Mengenzahl nicht NULL -Überprüfung (Menge> 0),
Preisnummer,
Primärschlüssel (product_id)
);
In diesem Fall können wir manuell einen Wert für die Spalte product_id hinzufügen.
Einfügen in Produkte (product_id, product_name, Menge, Preis) Werte (1, 'Microsoft Volterra', 0, 599);
Wenn wir keinen Wert für die Spalte angeben, generiert die Datenbankmotor sie automatisch.
Sie können keinen Nullwert in eine Identitätsspalte einfügen, wie oben definiert.
Beispiel 3
Wir können auch den Beginn mit und die Intervallwerte während der Erstellung von Tabellen wie gezeigt definieren:
Tischprodukte erstellen (
product_id -Nummer, die standardmäßig als Identität generiert werden, beginnen mit 10 Inkrement,
product_name varchar2 (255) nicht null,
Mengenzahl nicht NULL -Überprüfung (Menge> 0),
Preisnummer,
Primärschlüssel (product_id)
);
In diesem Fall beginnen die autogenerierten Werte bei zehn und erhöhen sich für jede neue Zeile, die der Tabelle hinzugefügt wurde.
Punkte zu beachten
Obwohl eine Identitätsspalte bei der Arbeit mit einem großen Datensatz hohe Bequemlichkeit bietet, ist sie mit Einschränkungen verbunden. Diese beinhalten:
Abschluss
In diesem Beitrag haben Sie die verschiedenen Methoden und Techniken der Arbeit mit der Identitätsspalte in Oracle -Datenbanken entdeckt.