Heim >Datenbank >MySQL-Tutorial >Warum kann ich keinen Wert in eine Identitätsspalte einfügen und wie kann ich das Problem beheben?

Warum kann ich keinen Wert in eine Identitätsspalte einfügen und wie kann ich das Problem beheben?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-19 09:12:10686Durchsuche

Why Can't I Insert a Value into an Identity Column, and How Do I Fix It?

Fehlerbehebung für den Fehler „Expliziter Wert für Identitätsspalte kann nicht eingefügt werden“

Wenn Sie versuchen, einen Wert manuell in eine Identitätsspalte einzufügen (eine Spalte, der von der Datenbank automatisch eindeutige sequentielle Werte zugewiesen werden), tritt die Fehlermeldung auf: „Der explizite Wert für die Identitätsspalte in der Tabelle ‚Tabelle‘ kann nicht eingefügt werden, wenn IDENTITY_INSERT lautet auf AUS stellen.“ Dies liegt daran, dass Identitätsspalten so konzipiert sind, dass sie ihre Werte selbst verwalten.

Die Lösung: IDENTITY_INSERT vorübergehend aktivieren

Die Lösung besteht darin, IDENTITY_INSERT vorübergehend für die spezifische Tabelle zu aktivieren. Diese Einstellung überschreibt die automatische Wertgenerierung. Hier ist der Prozess:

  1. Aktivieren Sie IDENTITY_INSERT: Verwenden Sie den folgenden SQL-Befehl und ersetzen Sie TableName durch den Namen Ihrer Tabelle:
<code class="language-sql">SET IDENTITY_INSERT TableName ON</code>
  1. Führen Sie INSERT aus: Jetzt können Sie Ihre INSERT-Anweisung mit dem expliziten Wert für die Identitätsspalte ausführen. Zum Beispiel:
<code class="language-sql">INSERT INTO TableName (IdentityColumnName, Column2, Column3)
VALUES (100, 'Some Value', 'Another Value');</code>
  1. Deaktivieren IDENTITY_INSERT: Entscheidend ist, dass Sie nach dem Einfügen IDENTITY_INSERT deaktivieren, um das automatische Verhalten der Identitätsspalte wiederherzustellen:
<code class="language-sql">SET IDENTITY_INSERT TableName OFF</code>

Anschauliches Beispiel:

Stellen Sie sich eine Tabelle Orders mit einer Identitätsspalte OrderID vor. Um einen Datensatz mit einem bestimmten OrderID einzufügen, gehen Sie wie folgt vor:

<code class="language-sql">SET IDENTITY_INSERT Orders ON;

INSERT INTO Orders (OrderID, CustomerID, OrderDate)
VALUES (12345, 1, '2024-03-08');

SET IDENTITY_INSERT Orders OFF;</code>

Dadurch können Sie den Wert 12345 in die Spalte OrderID einfügen. Denken Sie daran, IDENTITY_INSERT nach dem Einfügen immer zu deaktivieren, um die Integrität Ihrer Identitätsspalte zu wahren.

Das obige ist der detaillierte Inhalt vonWarum kann ich keinen Wert in eine Identitätsspalte einfügen und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn