Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So definieren Sie einen Auto-Increment-Primärschlüssel in SQL Server

Ähnlich wie MySQL, PostgreSQL, Oracle und viele andere relationale Datenbanken wird SQL Server am besten verwendet, wenn den meisten Datenbanktabellen eindeutige Primärschlüssel zugewiesen werden.

Die Verwendung von numerischen, automatisch inkrementierten Primärschlüsseln hat zahlreiche Vorteile, aber die wirkungsvollsten Vorteile sind die schnellere Geschwindigkeit bei der Durchführung von Abfragen und die Datenunabhängigkeit beim Durchsuchen von Tausenden von Datensätzen, die möglicherweise häufig geänderte Daten an anderer Stelle in der Tabelle enthalten. Mit einer konsistenten und eindeutigen numerischen Kennung können Anwendungen diese schnelleren und zuverlässigeren Abfragen nutzen.

Grundlegende Tabellenerstellung

Sobald Sie mit Ihrem SQL Server verbunden sind, beginnen Sie normalerweise mit CREATING eine neue Tabelle, die das Feld enthält, das Sie als inkrementierten Primärschlüssel verwenden möchten. Für unser Beispiel bleiben wir bei der altbewährten id Feld:

CREATE TABLE books (
  id              INT           NOT NULL,
  title           VARCHAR(100)  NOT NULL,
  primary_author  VARCHAR(100),
);

Das Problem hierbei ist, dass wir unsere id nicht kontrollieren können Feld. Wenn ein neuer Datensatz eingefügt wird, müssen wir nicht nur manuell einen Wert für id eingeben , aber wir müssen vorher eine Abfrage durchführen, um zu versuchen, diese id zu verifizieren Wert existiert noch nicht (bei vielen gleichzeitigen Verbindungen nahezu unmöglich).

Identitäts- und Primärschlüsselbeschränkungen verwenden

Es stellt sich heraus, dass die Lösung zwei Einschränkungsoptionen verwendet, die von SQL Server bereitgestellt werden.

Der erste ist PRIMARY KEY , die, wie der Name schon sagt, die angegebene Spalte dazu zwingt, sich als vollständig eindeutiger Index für die Tabelle zu verhalten, was schnelles Suchen und Abfragen ermöglicht.

Während SQL Server nur einen PRIMARY KEY zulässt Einschränkung, die einer einzelnen Tabelle zugewiesen ist, diesem PRIMARY KEY kann für mehr als eine Spalte definiert werden. In einem Szenario mit mehreren Spalten können einzelne Spalten doppelte, nicht eindeutige Werte enthalten, aber den PRIMARY KEY Einschränkung stellt sicher, dass jede Kombination von eingeschränkten Werten sind tatsächlich relativ zu jeder anderen Kombination eindeutig.

Das zweite Puzzleteil ist die IDENTITY Einschränkung, die SQL Server darüber informiert, den numerischen Wert in der angegebenen Spalte automatisch zu erhöhen, wenn ein neuer Datensatz INSERTED wird . Während IDENTITY kann akzeptiert zwei Argumente des numerischen seed wo die Werte beginnen, sowie das increment , werden diese Werte normalerweise nicht mit IDENTITY angegeben Einschränkung und werden stattdessen als Standard belassen (beide standardmäßig auf 1 ).

Mit diesem neuen Wissen an unseren Fingerspitzen können wir unsere vorherige CREATE TABLE umschreiben -Anweisung, indem Sie unsere beiden neuen Einschränkungen hinzufügen.

CREATE TABLE books (
  id              INT           NOT NULL    IDENTITY    PRIMARY KEY,
  title           VARCHAR(100)  NOT NULL,
  primary_author  VARCHAR(100),
);

Das ist alles dazu. Jetzt die id Spalte unserer books Tabelle wird bei jedem INSERT automatisch inkrementiert und die id -Feld ist garantiert ebenfalls ein eindeutiger Wert.