Клауза CONSTRAINT

Важно : Тази статия е преведена машинно – вижте отказа от отговорност. Английската версия на тази статия за справка можете да намерите тук .

Клаузата ограничение е подобна на индекс, въпреки че може да се използва и за установяване на релация с друга таблица.

Клаузата CONSTRAINT се използва в командите ALTER TABLE и CREATE TABLE за създаване или изтриване на ограничения. Има два типа клаузи CONSTRAINT: единият е за създаване на ограничение в единично поле, а другият – за създаване на ограничение в повече полета.

Забележка : База данни на Microsoft Access не поддържа използването на ОГРАНИЧЕНИЕ, или някоя от езика отчети данни дефиниция с бази данни на Microsoft Access. Вместо това използвайте метода за създаване на DAO.

Синтаксис

Ограничение на единично поле:

ОГРАНИЧЕНИЕ име {ПЪРВИЧЕН КЛЮЧ | УНИКАЛНИ | НЕ NULL |
ПРЕПРАТКИ foreigntable [(foreignfield1, foreignfield2)]
[вкл АКТУАЛИЗИРАЙ КАСКАДНО | ЗАДАВАНЕ на NULL]
[вкл ИЗТРИЙ КАСКАДНО | ЗАДАВАНЕ НА NULL]}

Ограничение на няколко полета:

Имена ОГРАНИЧЕНИЕ
{ПЪРВИЧЕН КЛЮЧ (primary1[, primary2 [,...]]) |
УНИКАЛНИ (unique1[, unique2 [,...]]) |
НЕ NULL (notnull1[, notnull2 [,...]]) |
ВЪНШЕН КЛЮЧ [NO INDEX] (препр1[, препр2 [,...]]) Препратки КЪМ foreigntable [(foreignfield1 [, foreignfield2 [,...]])]
[Вкл АКТУАЛИЗИРАЙ КАСКАДНО | ЗАДАВАНЕ на NULL]
[вкл ИЗТРИЙ КАСКАДНО | ЗАДАВАНЕ НА NULL]}

Клаузата CONSTRAINT има следните части:

Част

Описание

име

Името на ограничението, който искате да бъде създадено.

първичен1, първичен2

Имената на полето или полетата, които трябва да бъдат посочени като първичен ключ.

уникален1, уникален2

Имената на полето или полетата, които трябва да бъдат посочени като уникален ключ.

не_NULL1, не_NULL2

Името на полето или полетата, които са ограничени до непразни стойности.

препратка1, препратка2

Имената на полето или полетата, които са външен ключ и препращат към полета в друга таблица.

външна_таблица

Името на външна таблица, съдържаща полето или полетата, зададени от външно_поле.

външно_поле1, външно_поле2

Името на полето или полетата във външна_таблица, зададени от препратка1, препратка2. Можете да изпуснете тази клауза, ако зададеното поле е първичният ключ на външна_таблица.


Забележки

Използвайте синтаксиса за ограничение на единично поле в клаузата за дефиниция на поле на команда ALTER TABLE или CREATE TABLE непосредствено след спецификацията на типа на данните на полето.

Използвайте синтаксиса за ограничение на няколко полета винаги когато използвате запазена дума CONSTRAINT извън клауза за дефиниране на поле в команда ALTER TABLE или CREATE TABLE.

С помощта на CONSTRAINT можете да посочите за едно поле някой от следните типове ограничения:

  • Можете да използвате запазената дума UNIQUE, за да посочите полето като уникален ключ. Това означава, че никои два записа в таблицата не може да имат една и съща стойност в това поле. Можете да наложите ограничението за уникалност за всяко поле или всеки набор от полета. Ако ограничението за уникалност е за набор от полета, комбинираните стойности на всички полета в индекса трябва да бъдат уникални, дори ако два или повече записа имат една и съща стойност само в едно от полетата.

  • Можете да използвате запазените думи PRIMARY KEY, за да посочите за първичен ключ едно поле или набор от полета в таблица. Всички стойности в първичния ключ трябва да бъдат уникални и да не са Null; в една таблица може да има само един първичен ключ.

    Забележка : Не задавайте ограничението PRIMARY KEY в таблица, която вече има първичен ключ; ако го направите, възниква грешка.

  • Можете да използвате запазените думи FOREIGN KEY, за да посочите за външен ключ едно поле или набор от полета в таблица. Ако първичният ключ на външната таблица се състои от повече от един поле, трябва да използвате ограничаваща дефиниция за множество полета, изброяваща всички препращащи полета, името на външната таблица и имената на полета във външната таблица, към които са препратките, в същия ред, в който са изброени препращащите полета. Ако полетата, към които са препратките, са първичният ключ на външната таблица, не е необходимо да ги задавате. По подразбиране ядрото за управление на бази данни приема тези полета за първичен ключ.

    Ограниченията за външен ключ дефинират конкретни действия при промяна на съответната стойност на първичен ключ:

  • Можете да зададете действия, които да бъдат извършени във външната таблица на базата на съответно действие, извършено върху първичен ключ в таблицата, в която е дефиниран CONSTRAINT. Вижте например следната дефиниция за таблицата за клиенти Customers:

CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

Вижте също следната дефиниция на таблицата за поръчки Orders, която дефинира релация на външен ключ, препращащ към първичния ключ на таблицата Customers:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE

И двете клаузи ON UPDATE CASCADE и ON DELETE CASCADE са дефиниран върху външния ключ. Клаузата ON UPDATE CASCADE означава, че ако идентификаторът на потребител (CustId) е актуализиран в таблицата Customer, ще се извърши каскадно актуализиране в таблицата Orders. Всяка поръчка, съдържаща съответните стойности на идентификатор на клиент, ще бъде актуализирана автоматично с новата стойност. Клаузата ON DELETE CASCADE означава, че ако един клиент е изтрит от таблицата Customer, всички редове в таблицата Orders, съдържащи същата стойност за идентификатор на клиент, също ще бъдат изтрити.

Разгледайте следната различна дефиниция на таблицата Orders, използваща действието SET NULL вместо действието CASCADE:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE SET NULL ON DELETE SET NULL

Клаузата ON UPDATE SET NULL означава, че ако идентификатор на потребител (CustId) е актуализиран в таблицата Customer, съответните стойности на външните ключове в таблицата Orders ще бъдат установени автоматично на NULL. По същия начин клаузата ON DELETE SET NULL означава, че ако един клиент е изтрит от таблицата Customer, всички съответни външни ключове в таблицата Orders ще бъдат установени автоматично на NULL.

За да се предотврати автоматичното създаване на индекси за външни ключове, може да се използва модификаторът NO INDEX. Тази форма на дефиниция на външен ключ трябва да се използва само в случаи, при които получените стойности на индексите често се повтарят. Там, където стойностите в индекс на външен ключ се повтарят често, използването на индекс може да е по-малко ефективно от простото преглеждане на таблицата. Поддържането на този тип индекс с редове, вмъкнати и изтрити от таблицата, намалява производителността и няма никакви предимства.



Забележка : Отказ от отговорност за машинен превод: Тази статия е преведена от компютърна система без човешка намеса. Microsoft предлага тези машинни преводи, за да помогне на потребителите, които не говорят английски, да се възползват от съдържанието за продукти, услуги и технологии на Microsoft. Тъй като статията е преведена машинно, е възможно да съдържа грешки в речника, синтаксиса и граматиката.

Беше ли полезна тази информация?

Чудесно! Друга обратна връзка?

Как можем да подобрим това?

Благодарим ви за обратната връзка!

×