„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich eine Nicht-Identitätsspalte in SQL Server 2005 automatisch ohne ORDER BY erhöhen?

Wie kann ich eine Nicht-Identitätsspalte in SQL Server 2005 automatisch ohne ORDER BY erhöhen?

Veröffentlicht am 23.12.2024
Durchsuche:974

How to Auto-Increment a Non-Identity Column in SQL Server 2005 Without ORDER BY?

Generieren von automatisch inkrementierenden IDs in SQL Server 2005 ohne ORDER BY

Die Notwendigkeit, Daten aus einer Tabelle in eine andere einzufügen, während die automatische Inkrementierung erfolgt Eine Nichtidentitätsspalte kann eine Herausforderung sein. Der Standardansatz besteht darin, einen Cursor zu verwenden oder eine Tabellenvariable zu erstellen, aber diese können ineffizient sein.

Wenn kein legitimes ORDER BY-Feld vorhanden ist, kann die Funktion ROW_NUMBER verwendet werden. Das Fehlen einer expliziten Reihenfolge garantiert jedoch nicht die Beibehaltung der ursprünglichen Datenreihenfolge. Dies liegt daran, dass sich „nicht geordnet“ von „ursprüngliche Reihenfolge beibehalten“ unterscheidet.

Um dieses Problem zu beheben, besteht eine Lösung darin, die explizite Reihenfolge wie folgt zu vermeiden:

INSERT dbo.TargetTable (ID, FIELD)
SELECT
   Row_Number() OVER (ORDER BY (SELECT 1))
        Coalesce(
         (SELECT Max(ID) FROM dbo.TargetTable WITH (TABLOCKX, HOLDLOCK)),
         0
      ),
   FieldValue
FROM dbo.SourceTable
WHERE {somecondition};

Dieser Ansatz berechnet die maximale ID und fügt Daten ein, während Sperren erworben werden, um Parallelitätsfehler zu vermeiden.

Beachten Sie jedoch, dass die Verwendung einer Identitätsspalte dringend empfohlen wird, da dadurch die Notwendigkeit entfällt zum Sperren und sorgt für optimale Parallelität. Identitätsspalten bieten eine effizientere und robustere Lösung für die automatische Inkrementierung von IDs in SQL Server.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3