Grundlegendes zum Verhalten von SQL Server-Identitätsspalten bei Rollbacks
Die automatisch inkrementierenden Identitätsspalten von SQL Server weisen ein einzigartiges Merkmal auf: Sie erhöhen sich auch nach einem Transaktions-Rollback weiter. Dies kann zu Lücken in der Identitätssequenz führen, was bei bestimmten Anwendungen ein potenzielles Problem darstellt.
Wenn eine INSERT
-Anweisung innerhalb einer Transaktion fehlschlägt und die Transaktion zurückgesetzt wird, werden die eingefügten Zeilen entfernt. Der vor dem Rollback zugewiesene Identitätswert bleibt jedoch unverändert. Dies führt zu ungenutzten Identitätswerten, wodurch Lücken entstehen oder möglicherweise Probleme auftreten, wenn Sie versuchen, diese Werte wiederzuverwenden.
Dieser nicht-transaktionale Charakter von Identitätsspalten ist beabsichtigt. In einer Mehrbenutzerumgebung würde die transaktionale Identitätszuweisung zu erheblichem Leistungsaufwand und Engpässen führen, da Sperrmechanismen erforderlich wären, um den gleichzeitigen Zugriff und die Zuweisung desselben Identitätswerts zu verhindern.
Folglich ist eine Wiederherstellung der „verlorenen“ Identitätswerte nach einem Rollback nicht möglich.
Um Identitätslücken zu schließen, ziehen Sie alternative Ansätze zur Generierung eindeutiger Identifikatoren in Betracht, darunter:
Das obige ist der detaillierte Inhalt vonWarum erhöhen sich die SQL Server-Identitätsspalten auch nach Transaktions-Rollbacks?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!