Heim >Datenbank >MySQL-Tutorial >Kann eine SQL Server-Tabelle mehr als eine Identitätsspalte haben?

Kann eine SQL Server-Tabelle mehr als eine Identitätsspalte haben?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 07:17:20653Durchsuche

Can a SQL Server Table Have More Than One Identity Column?

Kann eine SQL Server-Tabelle zwei Identitätsspalten haben?

Viele Datenbankdesigner müssen mehrere Spalten in einer Tabelle haben, die automatisch Inkrementieren, entweder für den Primärschlüssel oder für andere Zwecke. In SQL Server ist dies jedoch nicht direkt möglich. Gemäß der Transact-SQL-Referenzdokumentation:

Pro Tabelle kann nur eine Identitätsspalte erstellt werden.

Beispiel:

Bedenken Sie die folgende SQL-Anweisung , die versucht, eine Tabelle mit zwei Identitätsspalten zu erstellen:

CREATE TABLE [dbo].[Foo](
    [FooId] [int] IDENTITY(1,1) NOT NULL,
    [BarId] [int] IDENTITY(1,1) NOT NULL
)

Diese Anweisung schlägt mit Folgendem fehl Fehler:

Msg 2744, Level 16, State 2, Line 1
Multiple identity columns specified for table 'Foo'. Only one identity column per table is allowed.

Alternative Lösungen:

Wenn Sie mehrere automatisch inkrementierende Werte in einer Tabelle benötigen, ziehen Sie die folgenden alternativen Lösungen in Betracht:

  • Zusammengesetzter Primärschlüssel: Erstellen Sie einen Primärschlüssel, der mehrere Spalten zu einer einzigen, eindeutigen zusammenfasst Bezeichner.
  • Nicht-Identitätsspalte: Erstellen Sie eine Nicht-Identitätsspalte und erhöhen Sie ihren Wert manuell mithilfe eines Triggers oder eines anderen Mechanismus.
  • Separate Tabelle: Erstellen Sie eine separate Tabelle, um die automatisch inkrementierenden Werte zu speichern, und referenzieren Sie sie mithilfe einer Fremdtabelle aus Ihrer Haupttabelle Schlüssel.

Obwohl SQL Server nicht nativ mehrere Identitätsspalten unterstützt, können diese alternativen Lösungen die von Ihnen benötigte Funktionalität bereitstellen.

Das obige ist der detaillierte Inhalt vonKann eine SQL Server-Tabelle mehr als eine Identitätsspalte haben?. 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