Mam następującą tabelę:
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
Nie chcę, aby kiedykolwiek była więcej niż jedna kolumna dla danej pary tickername
/ tickerbbname
pary. Już utworzyłem tabelę i mam w niej dużo danych (które już zapewniłem, że spełniają unikalne kryteria). Jednak w miarę powiększania się, pojawia się miejsce na błąd.
Czy jest jakiś sposób na dodanie UNIQUE
ograniczenia w tym momencie?
sql
database
postgresql
indexing
unique-constraint
Thomas Browne
źródło
źródło
Odpowiedzi:
psql
wewnętrzna pomoc:Dokumentowane również w dokumentach postgres (doskonałe źródło informacji, a także łatwe do odczytania).
źródło
ALTER TABLE tablename ADD UNIQUE (columns);
. (Należy pamiętać, żeCONSTRAINT
słowo kluczowe należy pominąć.)Tak, możesz. Ale jeśli masz nie unikalne wpisy na stole, to się nie powiedzie. Oto jak dodać unikalne ograniczenie do swojego stołu. Jeśli używasz PostgreSQL 9.x, możesz wykonać poniższe instrukcje.
źródło
Jeśli masz tabelę, która już zawierała ograniczenia oparte na powiedzmy: imię i nazwisko, a chciałeś dodać jeszcze jedno unikalne ograniczenie, musisz usunąć całe ograniczenie przez:
Upewnij się, że nowe ograniczenie, które chcesz dodać, jest unikalne / nie ma wartości null (jeśli jego SQL Sql może zawierać tylko jedną wartość null) we wszystkich danych w tej tabeli, a następnie możesz go ponownie utworzyć.
źródło
Tak, po fakcie możesz dodać ograniczenie UNIKALNE. Jeśli jednak masz w tabeli nie unikalne wpisy, Postgres będzie na to narzekać, dopóki ich nie poprawisz.
źródło
select <column> from <table> group by 1 having count(*) > 1;
przekaże raport o zduplikowanych wartościach.