Ich habe folgende Tabelle:
tickername | tickerbbname | tickertype
------------+---------------+------------
USDZAR | USDZAR Curncy | C
EURCZK | EURCZK Curncy | C
EURPLN | EURPLN Curncy | C
USDBRL | USDBRL Curncy | C
USDTRY | USDTRY Curncy | C
EURHUF | EURHUF Curncy | C
USDRUB | USDRUB Curncy | C
Ich will nicht , dass es immer mehr als eine Spalte für jedes gegebenes sein tickername
/ tickerbbname
Paar. Ich habe die Tabelle bereits erstellt und habe viele Daten darin (von denen ich bereits sichergestellt habe, dass sie die eindeutigen Kriterien erfüllen). Wenn es jedoch größer wird, schleicht sich Raum für Fehler ein.
Gibt es UNIQUE
an dieser Stelle eine Möglichkeit, eine Einschränkung hinzuzufügen ?
sql
database
postgresql
indexing
unique-constraint
Thomas Browne
quelle
quelle
Antworten:
psql
Inline-Hilfe:Auch in den Postgres-Dokumenten dokumentiert (eine hervorragende Ressource sowie leicht zu lesen).
quelle
ALTER TABLE tablename ADD UNIQUE (columns);
. (Beachten Sie, dass dasCONSTRAINT
Schlüsselwort weggelassen werden muss.)Ja, du kannst. Wenn Ihre Tabelle jedoch nicht eindeutige Einträge enthält, schlägt dies fehl. Hier erfahren Sie, wie Sie Ihrer Tabelle eine eindeutige Einschränkung hinzufügen. Wenn Sie PostgreSQL 9.x verwenden, können Sie den folgenden Anweisungen folgen.
quelle
Wenn Sie eine Tabelle hatten, in der bereits Einschränkungen vorhanden waren, die beispielsweise auf: Name und Nachname basieren, und Sie eine weitere eindeutige Einschränkung hinzufügen wollten, mussten Sie die gesamte Einschränkung löschen durch:
Stellen Sie sicher, dass die neue Einschränkung, die Sie hinzufügen möchten, für alle Daten in dieser Tabelle eindeutig / nicht null ist (wenn Microsoft SQL nur einen Nullwert enthalten kann), und erstellen Sie sie anschließend neu.
quelle
Ja, Sie können nachträglich eine EINZIGARTIGE Einschränkung hinzufügen. Wenn Ihre Tabelle jedoch nicht eindeutige Einträge enthält, beschwert sich Postgres darüber, bis Sie sie korrigieren.
quelle
select <column> from <table> group by 1 having count(*) > 1;
gibt einen Bericht über doppelte Werte.