Zusammenfassung: In diesem Tutorial erfahren Sie, wie Sie mithilfe der Oracle Identity Column auf einfache Weise eine automatisch generierte numerische Spalte für eine Tabelle definieren.
Einführung in Oracle identity column
Oracle 12c hat eine neue Methode eingeführt, mit der Sie eine Identitätsspalte für eine Tabelle definieren können, die der Spalte AUTO_INCREMENT
in MySQL oder IDENTITY
in SQL Server ähnelt.
Die Identitätsspalte ist für die Ersatz-Primärschlüsselspalte sehr nützlich., Wenn Sie eine neue Zeile in die Spalte Identität einfügen, generiert Oracle automatisch einen sequentiellen Wert und fügt ihn in die Spalte ein.
Um eine Identitätsspalte zu definieren, verwenden Sie die Identitätsklausel wie unten gezeigt:
Zunächst ist das Schlüsselwort GENERATED
obligatorisch.
Zweitens können Sie eine Option zum Generieren von Identitätswerten angeben:
-
GENERATED ALWAYS
: Oracle generiert immer einen Wert für die Identitätsspalte. Der Versuch, einen Wert in die Identitätsspalte einzufügen, führt zu einem Fehler., -
GENERATED BY DEFAULT
: Oracle erzeugt einen Wert für die Identitätsspalte, wenn Sie keinen Wert. Wenn Sie einen Wert angeben, fügt Oracle diesen Wert in die Spalte Identität ein. Für diese Option gibt Oracle einen Fehler aus, wenn Sie einen Nullwert in die Identitätsspalte einfügen. -
GENERATED BY DEFAULT ON NULL
: Oracle generiert einen Wert für die Identitätsspalte, wenn Sie einen Nullwert oder überhaupt keinen Wert angeben.
Drittens können Sie eine Reihe von Optionen für die Identitätsspalte haben.,
-
START WITH initial_value
steuert den Anfangswert für die Identitätsspalte. Der Standard-Anfangswert ist 1. -
INCREMENT BY internval_value
definiert das Intervall zwischen den generierten Werte. Standardmäßig ist der Intervallwert 1. -
CACHE
definiert eine Reihe von Werten, die Oracle vorher generieren sollte, um die Leistung zu verbessern. Sie verwenden diese Option für die Spalte mit einer hohen Anzahl von Einfügungen.
Oracle identity-Spalte Beispiele
nehmen wir einige Beispiele für die Verwendung der Oracle identity-Spalten.,
A) ERZEUGT IMMER Beispiel
Die folgende Anweisung erzeugt eine Tabelle mit dem Namen identity_demo
, die aus einer Identitätsspalte besteht:
Die folgende Anweisung fügt eine neue Zeile in die identity_demo
Tabelle ein:
Weil wir haben keinen Wert für die Spalte id
angegeben, Oracle hat automatisch einen sequentiellen Wert ab 1 generiert.,
Die folgende Anweisung versucht, einen Wert in die id
Identitätsspalte einzufügen:
Oracle hat einen Fehler ausgegeben:
Da die ID-Spalte als GENERATED ALWAYS
definiert wurde, konnte kein bereitgestellter Wert akzeptiert werden.,
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.,
Die folgende Anweisung fügt eine neue Zeile in die Tabelle identity_demo
mit einem angegebenen Wert für die Spalte id
ein:
In diesem Beispiel hat Oracle den angegebenen Wert verwendet und in die Tabelle eingefügt.,Erstellt zuerst die identity_demo
– Tabelle neu, deren id
– Spalte als Identitätsspalte definiert ist, wobei der Anfangswert bei 100 beginnt:
Zweitens fügen Sie eine Zeile in die identity_demo
– Tabelle ein:
Drittens, abfrage daten aus die identity_demo
tabelle:
Wie sie sehen können, die initial wert der id
Spalte ist 100 wie in identity Klausel angegeben.,
E) INKREMENTIEREN SIE MIT der Option example
Ändern Sie zunächst die ID-Spalte der Tabelle identity_demo
, die sowohl die Optionen als auch INCREMENT BY
enthält.
Zweite, einfügen zwei zeilen in die identity_demo
tabelle:
Dritte, abfrage daten aus der tabelle zu überprüfen die einfügungen:
Wie Sie sehen, hat die erste Zeile den ID-Wert 10. Die zweite Zeile hat den ID-Wert 20., Dies haben wir für die ID-Spalte definiert, die mit 10 beginnen und für die neue Zeile um 10 erhöhen soll.
Oracle identity column restrictions
Die Identity-Spalten unterliegen den folgenden Einschränkungen:
- Jede Tabelle hat eine und nur eine Identity-Spalte.
- Der Datentyp der Identitätsspalte muss ein numerischer Datentyp sein. der benutzerdefinierte Datentyp darf nicht mit der identity Klausel verwendet werden.
- Die Identitätsspalte wird nicht von der
CREATE TABLE AS SELECT
Anweisung vererbt., - Die Identitätsspalte kann keine andere
DEFAULT
Einschränkung haben. - Der Verschlüsselungsalgorithmus für verschlüsselte Identitätsspalten kann abgeleitet werden, daher sollten Sie einen starken Verschlüsselungsalgorithmus verwenden.
- Die Inline-Einschränkung der Identitätsspalte darf nicht mit der
NOT NULL
undNOT DEFERRABLE
– Einschränkung in Konflikt stehen, die in der Identitätsklausel angegeben ist.
In diesem Tutorial haben Sie gelernt, wie Sie die Oracle Identity-Spalte verwenden, mit der Sie einfach eine automatisch generierte numerische Spalte für eine Tabelle definieren können.,
- War dieses tutorial hilfreich?
- YesNo