Abrufen von Oracle zuletzt eingefügt IDENTITY

8

Seit Oracle 12c können wir IDENTITY-Felder verwenden.

Gibt es eine Möglichkeit, die zuletzt eingefügte Identität abzurufen (d. h. select @@identity oder select LAST_INSERTED_ID() usw.)?

    
bubi 15.01.2016, 12:38
quelle

5 Antworten

7

Nun. Oracle verwendet Sequenzen und Standardwerte für die IDENTITY-Funktionalität in 12c. Daher müssen Sie über Sequenzen für Ihre Frage wissen.

Erstellen Sie zuerst eine Test-Identitätstabelle.

%Vor%

Lassen Sie uns zuerst Ihren Sequenznamen suchen, der mit dieser Identitätsspalte erstellt wurde. Dieser Sequenzname ist ein Standardwert in Ihrer Tabelle.

%Vor%

für mich ist dieser Wert "ISEQ $$ _ 193606"

fügen Sie einige Werte ein.

%Vor%

füge dann den Wert ein und finde die Identität.

%Vor%

Sie sollten Ihren Identitätswert sehen. Wenn Sie in einem Block arbeiten möchten, verwenden Sie

%Vor%

Letzte ID ist mein Identitätsspaltenname.

    
Atilla Ozgur 20.01.2016, 07:56
quelle
1

Es scheint, dass Oracle IDENTITY implementiert hat, nur um zu sagen, dass sie Identitäten unterstützen. Alles wird noch mit SEQUENCES implementiert und manchmal müssen Sie auf SEQUENCE zugreifen, um einen Teil der Arbeit zu erledigen (d. H. Die zuletzt eingefügte IDENTITY abrufen).

Es gibt keine Möglichkeit, die IDENTITY ähnlich wie MySQL, SQL Server, DB2 usw. abzurufen. Sie müssen sie mit SEQUENCE abrufen.

    
bubi 20.01.2016 08:30
quelle
1

IDENTITY -Spalte verwendet ein SEQUENCE "unter der Haube" - Erstellen und Löschen von Sequenzen automatisch mit der verwendeten Tabelle. Sie können auch Parameter für Start mit und Inkrement mit angeben Beginnen Sie mit 1000 und erhöhen Sie um 2. Es ist wirklich sehr bequem, IDENTITY zu verwenden, wenn Sie seine Werte nicht direkt verwenden möchten.

Aber wenn Sie die Sequenz direkt bedienen müssen, sollten Sie sie verwenden eine weitere Option, die in Oracle 12c verfügbar ist - Spaltenstandardwerte. Sutch Standard Werte könnten aus der Sequenz nextval oder currval generiert werden. Damit Sie einen verständlichen Sequenznamen haben und ihn ohne Trigger als "Identität" verwenden können.

%Vor%

Sie können immer anrufen: my_new_table_seq.currval .

Es ist möglich, die ID aus SEQUENCE in der insert-Anweisung mit RETURNING clause zu generieren.

Erstellen Sie beispielsweise eine temporäre Tabelle:

%Vor%

Machen Sie einen Insert, der diesen Wert in der temporären Tabelle speichert:

%Vor%

Jetzt haben Sie "lokale" ID eingefügt.

%Vor%     
Mikhailov Valentine 19.01.2016 07:57
quelle
0

Was ist Ihr Bereich, globaler oder letzter Benutzer eingefügt? Wenn global, benutze einfach

%Vor%

Ссылка

Wenn spezifische Einfügungen & amp; Abfrage innerhalb einer Transaktion.

    
krish KM 15.01.2016 12:49
quelle
0

Bitte überprüfen Sie

%Vor%

Es wird Ihnen helfen, die zuletzt eingefügte Zeile abzurufen

    
Jawad Siddiqui 20.01.2016 11:07
quelle

Tags und Links