Problem:
Chcesz utworzyć klucz podstawowy dla tabeli w bazie danych.
Przykład:
Potrzebujemy klucza podstawowego dla tabeli o nazwie product
.
Rozwiązanie 1 (nowa tabela):
CREATE TABLE product ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL, price DECIMAL(7,2) );
Dyskusja:
Aby utworzyć nową tabelę z kolumną zdefiniowaną jako klucz podstawowy, możesz użyć słowa kluczowego PRIMARY KEY
na końcu definicji tej kolumny. W naszym przykładzie tworzymy tabelę product
za pomocą CREATE TABLE
klauzulę, z nazwami kolumn i odpowiadającymi im typami danych w nawiasach. Jako klucz podstawowy tej tabeli wybieramy identyfikator kolumny, dlatego wyznaczamy PRIMARY KEY
na końcu definicji tej kolumny.
Pamiętaj, że możesz utworzyć tylko jeden klucz podstawowy dla danej tabeli.
Rozwiązanie 2 (nowa tabela):
CREATE TABLE product ( name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL), price DECIMAL(7,2), PRIMARY KEY(name, producer) );
Dyskusja:
Innym sposobem zdefiniowania klucza podstawowego podczas tworzenia nowej tabeli jest użycie PRIMARY KEY
klauzula na końcu definicji kolumn. W takim przypadku wyznaczamy jedną lub więcej kolumn jako argument PRIMARY KEY
klauzula; te kolumny stają się kluczem podstawowym tabeli.
Zauważ, że to podejście pozwala na tworzenie kluczy podstawowych z wieloma kolumnami. W tym przykładzie klucz podstawowy tabeli product
składa się z dwóch kolumn:name
i producer
.
Rozwiązanie 3 (istniejąca tabela):
ALTER TABLE product ADD PRIMARY KEY (id);
Dyskusja:
Możliwe jest również zdefiniowanie klucza podstawowego dla istniejącej tabeli, która nie ma jeszcze klucza podstawowego.
Tutaj tabela jest zmieniana za pomocą ALTER TABLE
klauzula. Tabela (w naszym przykładzie product
) ma nazwę po słowie kluczowym ALTER TABLE
, a następnie ADD PRIMARY KEY
klauzula następuje z nazwą kolumny, która ma być użyta jako klucz podstawowy. Zwróć uwagę, że tabela musi już istnieć przed wykonaniem tego polecenia, a tabela nie może mieć jeszcze klucza podstawowego.
Rozwiązanie 4 (istniejąca tabela, ograniczenie klucza podstawowego):
ALTER TABLE product ADD CONSTRAINT PK_product_id PRIMARY KEY (id);
Dyskusja:
Użyj takiego zapytania, jeśli chcesz nazwać ograniczenie klucza podstawowego dla istniejącej tabeli. Tutaj ograniczenie klucza podstawowego, PK_product_id
, jest generowany z kolumny id
. Jeśli nie określisz nazwy ograniczenia, baza danych wygeneruje domyślną nazwę ograniczenia (nazwa będzie się różnić w zależności od bazy danych).