SQL Server IDENTITY_INSERT erlaubt das Einfügen expliziter Werte in die Identitätsspalte einer Tabelle.
Die Anweisung IDENTITY_INSERT muss gesetzt sein, um einen expliziten Wert für die Spalte identity einzufügen. Standardmäßig ist IDENTITY_INSERT DEAKTIVIERT.
SYNTAX
SET IDENTITY_INSERT schema_name . ] table_name { ON | OFF }
– Datenbankname
der name der Datenbank, in der die angegebene Tabelle existiert.
schema_name
Ist der name des Schemas, zu dem die Tabelle gehört.,
table_name
Ist der Name einer Tabelle mit einer Identitätsspalte.
Sehen wir uns ein Beispiel für SET IDENTITY_INSERT in SQL SERVER an.
Das folgende Beispiel zeigt, wie IDENTITY_INSERT verwendet wird, um den Identitätswert explizit für die Identitätsspalte anzugeben.
Wir erstellen eine Tabelle-X mit einer Identitätsspalten-ID. Überprüfen wir, ob wir versuchen, einen expliziten Wert für die ID der Identitätsspalte zu übergeben.,
CREATE TABLE X (ID INT IDENTITY(1,1) ) ;INSERT INTO X (ID) VALUES (1);
Wie wir sehen, gibt es einen Fehler mit einem expliziten Wert für die Identitätsspalte in Tabelle X und schlägt auch vor, dass, wenn wir einen expliziten Wert für die Identitätsspalte einfügen möchten, IDENTITY_INSERT aktiviert sein muss.
Jetzt versuchen wir, die obige Anweisung erneut auszuführen, nachdem IDENTITY_INSERT AUF gesetzt wurde .
SET IDENTITY_INSERT dbo.X ONINSERT INTO X (ID) VALUES (1);SET IDENTITY_INSERT dbo.X OFF
Wie wir sehen , expliziter Wert für die Identitätsspalte in die Tabelle eingefügt.,
In der obigen Anweisung müssen wir die Spaltenliste während des Einfügens angeben, da sonst kein expliziter Wert für die Spalte zulässig ist und ein Fehler ausgegeben wird.
Wie wir in der folgenden Anweisung auch nach IDENTITY_INSERT ON sehen , gibt es immer noch einen Fehler mit expliziten Werten für die Identitätsspalte, da wir den Spaltennamen während des Einfügens angeben müssen.