Freigeben über


So erstellen Sie eindeutige Einschränkungen

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance

Sie können mithilfe von SQL Server Management Studio oder Transact-SQL eine eindeutige Einschränkung im SQL Server erstellen, um sicherzustellen, dass in bestimmte Spalten, die nicht zum Primärschlüssel gehören, Werte nicht mehrfach eingegeben werden können. Durch die Erstellung einer eindeutigen Einschränkung wird automatisch ein entsprechender eindeutiger Index erstellt.

Hinweis

Unter Primärschlüssel, Fremdschlüssel und eindeutiger Schlüssel in Azure Synapse Analytics finden Sie weitere Informationen zu eindeutigen Einschränkungen in Azure Synapse Analytics.

Berechtigungen

Erfordert die ALTER-Berechtigung für die Tabelle.

Verwenden von SQL Server Management Studio (SSMS)

So erstellen Sie eine eindeutige Einschränkung mit SSMS

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Tabelle, der Sie eine eindeutige Einschränkung hinzufügen möchten, und klicken Sie auf Entwerfen.

  2. Wählen Sie im Menü Tabellen-DesignerIndizes/Schlüsselaus.

  3. Klicken Sie im Dialogfeld Indizes/Schlüssel auf Hinzufügen.

  4. Klicken Sie im Raster unter Allgemein auf Typ, und wählen Sie im Dropdown-Listenfeld rechts neben der Eigenschaft den Eintrag Eindeutiger Schlüssel aus. Klicken Sie danach auf Schließen.

  5. Klicken Sie im Menü Datei auf Tabellenname speichern.

Verwendung von Transact-SQL

So erstellen Sie eine eindeutige Einschränkung mit Transact-SQL

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. Im Beispiel wird die Tabelle TransactionHistoryArchive4 angelegt und eine UNIQUE-Einschränkung für die Spalte TransactionIDerstellt.

    USE AdventureWorks2022;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive4  
     (  
       TransactionID int NOT NULL,   
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)   
    );   
    GO  
    

So erstellen Sie eine eindeutige Einschränkung für eine vorhandene Tabelle

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. Im Beispiel werden für die Spalten PasswordHash und PasswordSalt in der Tabelle Person.Password eine eindeutige Einschränkung erstellt.

    USE AdventureWorks2022;   
    GO  
    ALTER TABLE Person.Password   
    ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);   
    GO  
    
    

So erstellen Sie eine eindeutige Einschränkung in einer neuen Tabelle

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. Im Beispiel wird eine Tabelle erstellt und dann wird eine eindeutige Einschränkung für die Spalte TransactionID definiert.

    USE AdventureWorks2022;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive2  
    (  
       TransactionID int NOT NULL,  
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)  
    );  
    GO  
    

So erstellen Sie eine eindeutige Einschränkung für eine nullfähige Spalte

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. Im Beispiel wird mithilfe der CREATE UNIQUE INDEX-Syntax eine gefilterte eindeutige Einschränkung erstellt, wobei nur die Eindeutigkeit für Nicht-NULL-Werte erzwungen wird.

    USE AdventureWorks2022;  
    GO
    CREATE UNIQUE INDEX UQ_AdventureWorksDWBuildVersion
    ON dbo.AdventureWorksDWBuildVersion (DBVersion)
    WHERE (DBVersion IS NOT NULL);
    GO