Problem:
Chcesz, aby dana kolumna była unikalna w danej tabeli w bazie danych.
Przykład:
Chcielibyśmy, aby kolumna name
unikalny w tabeli product
. Poniższe zapytanie przedstawia jeden ze sposobów na zrobienie tego.
Rozwiązanie 1
CREATE TABLE product ( id INT NOT NULL PRIMARY KEY, name VARCHAR(100) UNIQUE, producer VARCHAR(100), category VARCHAR(100) );
Dyskusja:
W tym przykładzie dana kolumna (kolumna name
) został nadany unikatowy przez dodanie klauzuli UNIQUE na końcu kolumny definicji (name VARCHAR(100) UNIQUE
). Ta nowa tabela (w naszym przykładzie:product
) będzie zawierać kolumnę (w naszym przykładzie:name
), który przechowuje unikalne wartości w wierszach.
Rozwiązanie 2:
ALTER TABLE product ADD CONSTRAINT UQ_product_name UNIQUE(name);
Dyskusja:
W tym przykładzie tabela product
już istnieje. Chcemy zmodyfikować tę tabelę i dodać unikalne ograniczenie do kolumny name
. Jest to możliwe za pomocą ALTER TABLE
klauzula. Najpierw piszemy ALTER TABLE, następnie podajemy nazwę tabeli (w naszym przykładzie:product
), a następnie dodajemy klauzulę ADD CONSTRAINT
z nazwą unikalnego ograniczenia (w naszym przykładzie:UQ_product_name
). Po nim następuje słowo kluczowe UNIQUE z kolumną/kolumnami (w naszym przykładzie jest to kolumna:name
) w nawiasach.
Możesz także utworzyć wielokolumnowe ograniczenie unikatowe. Oto jak:
Rozwiązanie 3:
ALTER TABLE product ADD CONSTRAINT UQ_product_name_producer UNIQUE(name, producer);
Dyskusja:
W tym przykładzie produkt tabeli jest zmieniany za pomocą ALTER TABLE
klauzulę i klauzulę ADD CONSTRAINT z nazwą ograniczenia przez unikalność (w naszym przykładzie:UQ_product_name_producer
), po którym następuje UNIQUE
słowo kluczowe z listą kolumn (w naszym przykładzie mamy dwie kolumny:name
i producer
) w nawiasach.