Проблем:
Искате да създадете първичен ключ за таблица в база данни.
Пример:
Искаме първичен ключ за таблица, наречена product
.
Решение 1 (нова таблица):
CREATE TABLE product ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL, price DECIMAL(7,2) );
Дискусия:
За да създадете нова таблица с колона, дефинирана като първичен ключ, можете да използвате ключовата дума PRIMARY KEY
в края на определението на тази колона. В нашия пример създаваме таблицата product
с помощта на CREATE TABLE
клауза, с имената на колоните и съответните им типове данни в скоби. Избираме идентификатора на колоната като първичен ключ на тази таблица, така че обозначаваме PRIMARY KEY
в края на дефиницията на тази колона.
Имайте предвид, че можете да създадете само един първичен ключ за дадена таблица.
Решение 2 (нова таблица):
CREATE TABLE product ( name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL), price DECIMAL(7,2), PRIMARY KEY(name, producer) );
Дискусия:
Друг начин за дефиниране на първичен ключ по време на създаването на нова таблица е с PRIMARY KEY
клауза в края на дефинициите на колоните. В този случай обозначаваме една или повече колони като аргумент на PRIMARY KEY
клауза; тези колони стават първичен ключ за таблицата.
Имайте предвид, че този подход позволява първични ключове, изградени с множество колони. В този пример първичният ключ за таблицата product
се формира от две колони:name
и producer
.
Решение 3 (съществуваща таблица):
ALTER TABLE product ADD PRIMARY KEY (id);
Дискусия:
Също така е възможно да се дефинира първичен ключ за съществуваща таблица, която все още няма първичен ключ.
Тук таблицата се променя с помощта на ALTER TABLE
клауза. Таблицата (в нашия пример product
) е кръстен на ключовата дума ALTER TABLE
, след това ADD PRIMARY KEY
клауза следва с името на колоната, която ще се използва като първичен ключ. Имайте предвид, че таблицата трябва вече да съществува, преди тази команда да бъде изпълнена и таблицата не трябва да има първичен ключ.
Решение 4 (съществуваща таблица, ограничение на първичния ключ):
ALTER TABLE product ADD CONSTRAINT PK_product_id PRIMARY KEY (id);
Дискусия:
Използвайте заявка като тази, ако искате да наименувате ограничение на първичен ключ за съществуваща таблица. Тук ограничението на първичния ключ, PK_product_id
, се генерира от колоната id
. Ако не посочите името на ограничението, базата данни генерира име на ограничение по подразбиране (името ще варира според базата данни).