Erstellen von PrimärschlüsselnCreate Primary Keys

Anwendungsbereich:Applies to: JaSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) und höher JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceAnwendungsbereich:Applies to: JaSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) and later JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure SQL Managed Instance

Sie können mit SQL ServerSQL Server oder SQL Server Management StudioSQL Server Management Studio einen Primärschlüssel in Transact-SQLTransact-SQLdefinieren.You can define a primary key in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Beim Erstellen eines Primärschlüssels wird je nach Spezifikation automatisch ein zugehöriger eindeutiger, gruppierter Index oder ein nicht gruppierter Index erstellt.Creating a primary key automatically creates a corresponding unique clustered index, or a nonclustered index if specified as such.

VorbereitungenBefore You Begin

EinschränkungenLimitations and Restrictions

  • Eine Tabelle kann nur eine PRIMARY KEY-Einschränkung enthalten.A table can contain only one PRIMARY KEY constraint.

  • Alle Spalten, für die eine PRIMARY KEY-Einschränkung definiert wurde, müssen als NOT NULL definiert sein.All columns defined within a PRIMARY KEY constraint must be defined as NOT NULL. Falls weder NULL noch NOT NULL angegeben ist, wird für alle Spalten, auf die eine PRIMARY KEY-Einschränkung angewendet wird, die NULL-Zulässigkeit auf NOT NULL festgelegt.If nullability is not specified, all columns participating in a PRIMARY KEY constraint have their nullability set to NOT NULL.

SicherheitSecurity

BerechtigungenPermissions

Zum Erstellen einer neuen Tabelle mit einem primären Schlüssel sind die CREATE TABLE-Berechtigung für die Datenbank und die ALTER-Berechtigung für das Schema erforderlich, in dem die Tabelle erstellt wird.Creating a new table with a primary key requires CREATE TABLE permission in the database and ALTER permission on the schema in which the table is being created.

Zum Erstellen eines Primärschlüssels für eine vorhandene Tabelle ist die ALTER-Berechtigung für die Tabelle erforderlich.Creating a primary key in an existing table requires ALTER permission on the table.

Verwenden von SQL Server Management StudioUsing SQL Server Management Studio

So erstellen Sie einen PrimärschlüsselTo create a primary key

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Tabelle, der Sie eine UNIQUE-Einschränkung hinzufügen möchten, und klicken Sie auf Entwerfen.In Object Explorer, right-click the table to which you want to add a unique constraint, and click Design.
  2. Klicken Sie im Tabellen-Designerauf den Zeilenselektor für die Datenbankspalte, die Sie als Primärschlüssel definieren möchten.In Table Designer, click the row selector for the database column you want to define as the primary key. Wenn Sie mehrere Spalten auswählen möchten, halten Sie STRG gedrückt, und klicken Sie auf die Zeilenselektoren für die anderen Spalten.If you want to select multiple columns, hold down the CTRL key while you click the row selectors for the other columns.
  3. Klicken Sie mit der rechten Maustaste auf den Zeilenselektor für die Spalte, und wählen Sie Primärschlüssel festlegenaus.Right-click the row selector for the column and select Set Primary Key.

Achtung

Wenn Sie den Primärschlüssel neu definieren möchten, müssen Sie zunächst alle Beziehungen mit dem vorhandenen Primärschlüssel löschen, da erst dann der neue Primärschlüssel erstellt werden kann.If you want to redefine the primary key, any relationships to the existing primary key must be deleted before the new primary key can be created. In einer Warnmeldung werden Sie informiert, dass vorhandene Beziehungen bei diesem Prozess automatisch gelöscht werden.A message will warn you that existing relationships will be automatically deleted as part of this process.

Sie können eine Primärschlüsselspalte am Primärschlüsselsymbol erkennen, das im Zeilenselektor angezeigt wird.A primary key column is identified by a primary key symbol in its row selector.

Wenn ein Primärschlüssel aus mehreren Spalten besteht, können Werte in einer Spalte doppelt vorkommen. Die Kombination der Werte in allen Spalten des Primärschlüssels muss jedoch eindeutig sein.If a primary key consists of more than one column, duplicate values are allowed in one column, but each combination of values from all the columns in the primary key must be unique.

Wenn Sie einen Verbundschlüssel definieren, stimmt die Spaltenreihenfolge im Primärschlüssel mit der Spaltenreihenfolge überein, die in der Tabelle angezeigt wird.If you define a compound key, the order of columns in the primary key matches the order of columns as shown in the table. Sie können die Spaltenreihenfolge jedoch nach Erstellen des Primärschlüssels ändern.However, you can change the order of columns after the primary key is created. Weitere Informationen finden Sie unter Ändern von Primärschlüsseln.For more information, see Modify Primary Keys.

Verwenden von Transact-SQLUsing Transact-SQL

So erstellen Sie einen Primärschlüssel in einer vorhandenen TabelleTo create a primary key in an existing table

Im folgenden Beispiel wird ein Primärschlüssel für die Spalte TransactionID in der AdventureWorks-Datenbank erstellt.The following example creates a primary key on the column TransactionID in the AdventureWorks database.

ALTER TABLE Production.TransactionHistoryArchive
   ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID);

So erstellen Sie einen Primärschlüssel in einer neuen TabelleTo create a primary key in a new table

Im folgenden Beispiel wird eine Tabelle erstellt, und es wird ein Primärschlüssel für die Spalte TransactionID in der AdventureWorks-Datenbank definiert.The following example creates a table and defines a primary key on the column TransactionID in the AdventureWorks database.

CREATE TABLE Production.TransactionHistoryArchive1
   (
      TransactionID int IDENTITY (1,1) NOT NULL
      , CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
   )
;

Erstellen eines Primärschlüssels mit einem gruppierten Index in einer neuen TabelleTo create a primary key with clustered index in a new table

Im folgenden Beispiel wird eine Tabelle erstellt, und es wird ein Primärschlüssel für die Spalte CustomerID sowie ein gruppierter Index für TransactionID in der AdventureWorks-Datenbank definiert.The following example creates a table and defines a primary key on the column CustomerID and a clustered index on TransactionID in the AdventureWorks database.

-- Create table to add the clustered index
CREATE TABLE Production.TransactionHistoryArchive1
   (
      CustomerID uniqueidentifier DEFAULT NEWSEQUENTIALID()
      , TransactionID int IDENTITY (1,1) NOT NULL
      , CONSTRAINT PK_TransactionHistoryArchive1_CustomerID PRIMARY KEY NONCLUSTERED (CustomerID)
   )
;

-- Now add the clustered index
CREATE CLUSTERED INDEX CIX_TransactionID ON Production.TransactionHistoryArchive1 (TransactionID);

Siehe auchSee Also