Tritt bei SQL-Einfügevorgängen der Fehler „Der explizite Wert für die Identitätsspalte in der Tabelle ‚table‘ kann nicht eingefügt werden, wenn IDENTITY_INSERT auf OFF gesetzt ist“ auf? Dieser Leitfaden erläutert die Ursache und bietet eine Lösung. Dieser Fehler tritt auf, wenn Sie versuchen, einer als Identitätsspalte gekennzeichneten Spalte, die automatisch Werte generiert, manuell einen Wert zuzuweisen.
Identitätsspalten sind Datenbankspalten, die automatisch inkrementiert werden und normalerweise als Primärschlüssel oder eindeutige Bezeichner dienen. Die Datenbank verwaltet den Inkrementierungsprozess und fügt normalerweise für jede neue Zeile einen festen Schrittwert (häufig 1) hinzu. Dies stellt eindeutige, sequentielle Werte sicher, die für Datenbankoperationen und referenzielle Integrität von entscheidender Bedeutung sind.
Der Fehler entsteht durch den Versuch, einen Wert direkt in eine Identitätsspalte einzufügen, während die IDENTITY_INSERT
-Eigenschaft der Tabelle auf OFF
gesetzt ist. Diese Einstellung verhindert manuelle Wertzuweisungen zu Identitätsspalten.
IDENTITY_INSERT
Die Lösung besteht darin, vorübergehend IDENTITY_INSERT
für die betroffene Tabelle zu aktivieren, um das manuelle Einfügen zu ermöglichen. Hier ist der Prozess:
Aktivieren Sie IDENTITY_INSERT
: Führen Sie den folgenden Befehl aus und ersetzen Sie [TableName]
durch den Namen Ihrer Tabelle:
<code class="language-sql">SET IDENTITY_INSERT [TableName] ON</code>
Führen Sie die Einfügung aus: Führen Sie nun Ihre Einfügeanweisung mit dem expliziten Wert für die Identitätsspalte aus.
Deaktivieren IDENTITY_INSERT
: Deaktivieren Sie nach dem Einfügen sofort IDENTITY_INSERT
, um das automatische Generierungsverhalten wiederherzustellen:
<code class="language-sql">SET IDENTITY_INSERT [TableName] OFF</code>
Dadurch wird sichergestellt, dass bei nachfolgenden Einfügungen wieder die automatische Inkrementierungsfunktion für die Identitätsspalte verwendet wird, wodurch die Integrität Ihrer Datenbank gewahrt bleibt. Denken Sie daran, IDENTITY_INSERT
immer nach jedem manuellen Einfügen zu deaktivieren, um unerwartetes Verhalten zu verhindern.
Das obige ist der detaillierte Inhalt vonWarum gibt SQL den Fehler „Kann keinen expliziten Wert für die Identitätsspalte einfügen' aus und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!