Предложение unique

Для того чтобы сервер автоматически проверял и поддерживал уникальность для некоторого поля, надо для данного поля ввести ограничитель на уникальность. Для этого используется предложение UNIQUE инструкции CREATE TABLE.

Ниже приведена модифицированная инструкция CREATE TABLE для таблицы OFFISY с включением в нее условием уникальности для столбца CITY:

CREATE TABLE OFFISY

(

ID_OFC INTEGER NOT NULL,

CITY VARCHAR(15) NOT NULL,

REGION VARCHAR(10) NOT NULL,

MNGR INTEGER,

TARGET MONEY,

SALES MONEY NOT NULL,

PRIMARY KEY (OFFICE),

CONSTRAINT HASMGR

FOREIGN KEY (MNGR) REFERENCES SLUZHASCHIE ON DELETE SET NULL,

UNIQUE (CITY));

Если первичный или внешний ключ включают в себя только один столбец, либо если условие уникальности или условие на значения касаются одного столбца, то разрешается использовать «сокращенную» форму ограничения, при которой оно просто добавляется в конец определения столбца, как это показано в нижеследующем примере:

CREATE TABLE OFFISY

(ID_OFC INTEGER NOT NULL,

CITY VARCHAR(15) NOT NULL UNIQUE,

REGION VARCHAR(10) NOT NULL,

MNGR INTEGER,

TARGET MONEY,

SALES MONEY NOT NULL,

PRIMARY KEY (OFFICE),

CONSTRAINT HASMGR

FOREIGN KEY (MGR) REFERENCES SLUZHASCHIE ON DELETE SET NULL);

Предложение CHECK

Когда создается таблица, то для каждого поля задается тип его значения. Это может быть INTEGER, CHAR и т.п. Тип определяет допустимое множество значений для данного поля. Но в некоторых случаях это множество значений много шире реально используемого множества. В SQL есть средства для более тонкого описания множества допустимых значений поля (в теории это множество называется доменом). Задать домен для того или иного поля можно с помощью ограничений на значение. Этот ограничитель указывается при создании таблицы. После типа поля или значения по умолчанию надо указать ключевое слово CHECK и логическое выражение в скобках

CREATE TABLE OFFISY

(

ID_OFC INTEGER NOT NULL,

CITY VARCHAR(15) NOT NULL,

REGION VARCHAR(10) NOT NULL,

MNGR INTEGER,

TARGET MONEY,

SALES MONEY NOT NULL,

PRIMARY KEY (OFFICE),

CONSTRAINT HASMGR

FOREIGN KEY (MGR) REFERENCES SLUZHASCHIE ON DELETE SET NULL,

CHECK (TARGET >= 0.00));

В ограничителе на значение можно использовать сколь угодно сложное логическое выражение. Выражение должно иметь тип, совместимый с типом столбца. Не допускается использование вложенных подзапросов, агрегатных функций и вызовов хранимой процедуры.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: