Zusammenfassung: In diesem Tutorial erfahren Sie mehr über die PostgreSQL UNIQUE
-Einschränkung, um sicherzustellen, dass in einer Spalte oder einer Gruppe von Spalten gespeicherte Werte für alle Zeilen in einer Tabelle eindeutig sind.
Manchmal möchten Sie sicherstellen, dass in einer Spalte oder einer Gruppe von Spalten gespeicherte Werte in der gesamten Tabelle eindeutig sind, z. B. E-Mail-Adressen oder Benutzernamen.
PostgreSQL stellt Ihnen die UNIQUE
-Einschränkung zur Verfügung, die die Eindeutigkeit der Daten korrekt beibehält.
Wenn eine UNIQUE
-Einschränkung vorhanden ist, wird jedes Mal, wenn Sie eine neue Zeile einfügen, überprüft, ob der Wert bereits in der Tabelle enthalten ist. Es lehnt die Änderung ab und gibt einen Fehler aus, wenn der Wert bereits vorhanden ist. Der gleiche Prozess wird für die Aktualisierung vorhandener Daten durchgeführt.
Wenn Sie einer Spalte oder einer Gruppe von Spalten eine UNIQUE
-Einschränkung hinzufügen, erstellt PostgreSQL automatisch einen eindeutigen Index für die Spalte oder die Gruppe von Spalten.
PostgreSQL UNIQUE constraint example
Die folgende Anweisung erstellt eine neue Tabelle mit dem Namen person
mit einer UNIQUE
-Einschränkung für die email
-Spalte.
Code language: SQL (Structured Query Language) (sql)
Beachten Sie, dass die obige UNIQUE
-Einschränkung als Tabellenbeschränkung umgeschrieben werden kann, wie in der folgenden Abfrage gezeigt:
Code language: SQL (Structured Query Language) (sql)
Fügen Sie zunächst mit der Anweisung INSERT
eine neue Zeile in die Tabelle person
ein:
Code language: SQL (Structured Query Language) (sql)
Zweitens fügen Sie eine weitere Zeile mit doppelten E-Mails ein.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL hat eine Fehlermeldung ausgegeben.
Code language: SQL (Structured Query Language) (sql)
Erstellen einer EINDEUTIGEN Einschränkung für mehrere Spalten
Mit PostgreSQL können Sie eine UNIQUE
-Einschränkung für eine Gruppe von Spalten mithilfe der folgenden Syntax erstellen:
Code language: SQL (Structured Query Language) (sql)
Die Kombination der Werte in Spalte c2 und c3 ist in der gesamten Tabelle eindeutig. Der Wert der Spalte c2 oder c3 muss nicht eindeutig sein.
Hinzufügen einer eindeutigen Einschränkung mithilfe eines eindeutigen Index
Manchmal möchten Sie einer vorhandenen Spalte oder Spaltengruppe eine eindeutige Einschränkung hinzufügen. Schauen wir uns das folgende Beispiel an.
Angenommen, Sie haben zunächst eine Tabelle mit dem Namen equipment
:
Code language: SQL (Structured Query Language) (sql)
Erstellen Sie anschließend einen eindeutigen Index basierend auf der Spalte equip_id
.
Code language: SQL (Structured Query Language) (sql)
Drittens fügen Sie der equipment
-Tabelle mithilfe des equipment_equip_id
-Index eine eindeutige Einschränkung hinzu.
Code language: SQL (Structured Query Language) (sql)
Beachten Sie, dass die Anweisung ALTER TABLE
eine exklusive Sperre für die Tabelle erhält. Wenn Sie ausstehende Transaktionen haben, wird gewartet, bis alle Transaktionen abgeschlossen sind, bevor die Tabelle geändert wird. Daher sollten Sie die Tabelle pg_stat_activity
überprüfen, um die aktuellen ausstehenden Transaktionen anzuzeigen, die mit der folgenden Abfrage ausgeführt werden:
Code language: SQL (Structured Query Language) (sql)
Sie sollten sich das Ergebnis ansehen, um die Spalte state
mit dem Wert idle in transaction
zu finden. Dies sind die Transaktionen, deren Abschluss noch aussteht.
In diesem Lernprogramm haben Sie mehr über UNIQUE
-Einschränkungen erfahren und erfahren, wie Sie diese verwenden, um Werte zu erzwingen, die in einer Spalte oder einer Gruppe von Spalten gespeichert sind, die für Zeilen in derselben Tabelle eindeutig sind.
- War dieses Tutorial hilfreich ?
- JaNein