Auto-Inkrement-Transformation für vorhandene Oracle-Tabellenspalten
Problem:
Wie kann eine vorhandene Spalte, die bereits als gekennzeichnet ist der Primärschlüssel so konfiguriert werden, dass er in einer Oracle-Datenbank automatisch inkrementiert wird? Die Spalte wurde mit dem Datentyp VARCHAR2(9 BYTE) erstellt.
Lösung:
Oracle 11g und Prior (Pre-12c): Sequenz und Auslöser
-
Erstellen Sie einen Sequenz: Erstellen Sie eine Sequenz wie t_seq mit dem Startwert 150111111 und inkrementellen Schritten von 1.
-
Implementieren Sie einen Trigger: Entwickeln Sie einen BEFORE INSERT-Trigger, der die Spalte mit füllt der nächste Wert aus der Sequenz, wenn der Spaltenwert ist NULL.
Oracle 12c und höher: Identitätsspalte
-
Identitätsspalte verwenden: Definieren Sie eine IDENTITÄTSSpalte in der Tabelle Erstellungsanweisung, beginnend mit 150111111 und inkrementell um 1.
Beispiel:
CREATE TABLE t (
ID NUMBER GENERATED ALWAYS AS IDENTITY
START WITH 150111111 INCREMENT BY 1,
text VARCHAR2(50)
);
Nach dem Login kopieren
Vorteile von Identitätsspalten:
- Vereinfacht die automatische -Inkrementelle Implementierung ohne die Notwendigkeit von Sequenzen oder Triggern.
- Sorgt dafür eindeutige, sequentielle Werte für die angegebene Spalte.
Zusätzliche Informationen:
- Oracle generiert eine Sequenz (ISEQ$$) zur Unterstützung der Identitätsspalte .
- Überwachen Sie die Informationen zur automatischen Inkrementierung mithilfe der Ansicht ALL_TAB_IDENTITY_COLS.
Das obige ist der detaillierte Inhalt vonWie kann ich eine vorhandene Oracle-Primärschlüsselspalte automatisch inkrementieren lassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!