EINFÜGEN einer Spalte mit IDENTITY-Set
SQL Server verfügt über eine "IDENTITY"-Eigenschaft, die die fortlaufende Zahl automatisch von 1 auf eine bestimmte Spalte festlegt, wenn Sie einen Datensatz hinzufügen. Wenn Sie beispielsweise IDENTITY in Spalte A festlegen und 3 Datensätze hinzufügen, wird Spalte A automatisch mit den Werten 1, 2 und 3 in der Reihenfolge aufgefüllt, in der Sie sie hinzugefügt haben.
Selbst wenn Sie eine INSERT-Anweisung verwenden, wird der Wert automatisch festgelegt, so dass es nicht notwendig ist, den Wert explizit zu setzen, aber ich denke, dass es Fälle gibt, in denen Sie den Wert explizit festlegen möchten, weil er für einen Fremdschlüssel usw. verwendet wird.
Angenommen, es gibt eine Tabelle, in der die Eigenschaft "IDENTITY" in der Spalte "ID" festgelegt ist, wie in der Abbildung dargestellt.
Eine INSERT-Anweisung, die einen Wert in diese Tabelle einfügt, einschließlich der ID-Spalte, würde wie folgt aussehen:
insert into [テーブル名] ([ID], [Value]) values (1, 1)
Wenn ich jedoch versuche, es auszuführen, denke ich, dass der folgende Fehler angezeigt wird.
Msg 544, Ebene 16, Zustand 1, Linie 1 Wenn IDENTITY_INSERT auf OFF gesetzt ist, können explizite Werte nicht in die Identitätsspalte der Tabelle 'XXXXX' eingefügt werden.
Bei Spalten, die ursprünglich auf IDENTITY festgelegt wurden, wird davon ausgegangen, dass Werte automatisch festgelegt werden, sodass Sie die Werte nicht explizit festlegen können.
Wenn Sie es wirklich einstellen möchten, müssen Sie "IDENTITY_INSERT" auf "ON" setzen, wie in der Fehlermeldung beschrieben. Aktivieren Sie IDENTITY_INSERT ON vor dem EINFÜGEN und zurück zu OFF, wenn die Einfügung abgeschlossen ist, wie in der folgenden SQL-Datei:
set identity_insert [テーブル名] on;
insert into [テーブル名] ([ID], [Value]) values (1, 1)
set identity_insert [テーブル名] off;
-- 確認
select * from [テーブル名];
Sie können den Wert nun explizit festlegen und EINFÜGEN. INSERT-SELECT mit Tabellen ist ebenfalls gültig.
Spalten mit IDENTITY werden automatisch Werte aus 1 zugewiesen, aber wenn Sie die Werte explizit wie oben beschrieben festlegen, fragen Sie sich vielleicht, welche Nummer als nächstes zugewiesen wird. In diesem Fall wird der nächste zugewiesene Wert aus der Zahl nach dem höchsten der Tabelle hinzugefügten Wert zugewiesen, sodass beim Einfügen eines neuen Datensatzes kein doppelter Wert vorhanden ist. (Es gibt jedoch Ausnahmen aufgrund von Behinderungen usw.)