SQL Server 2008: Verwalten von Identitätsspalteneinfügungen mit IDENTITY_INSERT
In SQL Server-Datenbanken treten Situationen auf, in denen Sie manuell Werte in Identitätsspalten einfügen müssen. Allerdings ist IDENTITY_INSERT
standardmäßig deaktiviert und verhindert so das direkte Einfügen.
Den IDENTITY_INSERT
AUS-Fehler verstehen
Der Versuch, einen Wert in eine Identitätsspalte einzufügen, während IDENTITY_INSERT
auf AUS gesetzt ist, führt zu folgendem Fehler:
Der explizite Wert für die Identitätsspalte in der Tabelle „TableName“ kann nicht eingefügt werden, wenn IDENTITY_INSERT auf OFF gesetzt ist.
Das liegt daran, dass SQL Server eindeutige Identitätswerte automatisch verwaltet. Wenn IDENTITY_INSERT
AUS ist, geht die Datenbank davon aus, dass die Identitätsspalte leer ist, sodass der nächste sequentielle Wert zugewiesen werden kann.
Aktivieren IDENTITY_INSERT
mit SQL Server Management Studio (SSMS)
So aktivieren Sie IDENTITY_INSERT
für eine bestimmte Tabelle in SSMS:
<tablename>
durch den Namen Ihrer Tabelle:<code class="language-sql">SET IDENTITY_INSERT <tablename> ON;</code>
IDENTITY_INSERT
anschließend zu deaktivieren.T-SQL direkt verwenden
Sie können IDENTITY_INSERT
auch direkt in T-SQL verwalten:
<code class="language-sql">SET IDENTITY_INSERT sometableWithIdentity ON; INSERT INTO sometableWithIdentity (IdentityColumn, col2, col3, ...) VALUES (AnIdentityValue, col2value, col3value, ...); SET IDENTITY_INSERT sometableWithIdentity OFF;</code>
Detaillierte Fehlermeldungen
Fehlermeldungen geben die betroffene Tabelle an und helfen so bei der Problemerkennung. Zum Beispiel:
<code>Cannot insert explicit value for identity column in table 'Baskets' when IDENTITY_INSERT is set to OFF.</code>
Durch die vorübergehende Aktivierung von IDENTITY_INSERT
steuern Sie die Werte der Identitätsspalte. Deaktivieren Sie es anschließend immer, um die Datenbankintegrität und die sequentielle Identitätsgenerierung aufrechtzuerhalten.
Das obige ist der detaillierte Inhalt vonWie kann ich IDENTITY_INSERT in SQL Server 2008 für kontrollierte Identitätsspalteneinfügungen aktivieren und deaktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!