Welcher Befehl würde IDENTITY INSERT ON / OFF vom SQL Server in Oracle ersetzen?

8

Ich muss diese Abfrage (hier vereinfacht) von T-SQL nach ORACLE migrieren

%Vor%

id ist ein Identity-Feld im SQL Server.

Ich habe die gleiche Tabelle mit einer Sequenz in ORACLE, ich konnte kein Snippet finden, das zeigt, wie man die Sequenz deaktiviert und sie so setzt, dass sie mit MAX (id) + 1 wieder beginnt.

Jeder ORACLE-Experte kann mir dabei helfen?

Danke, Rodrigo.

    
rodrigoq 03.05.2010, 15:04
quelle

3 Antworten

7

Sie müssen die Identität in Oracle nicht deaktivieren. Da Sie Sequenzen verwenden, verwenden Sie sie einfach nicht für diese Einfügung.

Das heißt statt

%Vor%

verwenden Sie

%Vor%

Was Ihre zweite Frage zum Neustart der Sequenz angeht, denke ich, dass das beantwortet ist hier in SO.

    
MJB 03.05.2010, 15:13
quelle
1

Es ist wie eine schlechte Idee, mit Spalten zu füllen, die auf diese Weise mit Oracle-Sequenzen gefüllt sind. In Oracle pflegen Sie normalerweise eine Spalte, die über Sequenzen mit einem Trigger gefüllt wird. Wenn Sie diese Funktion aktivieren und deaktivieren und die Sequenz ad lib zurücksetzen, besteht das Risiko, dass eine Sequenz nicht verfügbar ist, wenn ein anderer Prozess sie benötigt oder auf einen Wert zurückgesetzt wird, der bereits verwendet, aber nicht festgeschrieben wurde.

    
DCookie 03.05.2010 15:26
quelle
0

Legen Sie die Sequenzen ab und erstellen Sie sie neu, wenn Sie den Wert für max + 1 erreicht haben.

    
Nate Zaugg 03.05.2010 15:41
quelle