Определение ограничений на таблицу

  • Часть 1
  • | 2
  • | 3
  • | 4

CREATE TABLE Phone_Sprav (number INTEGER PRIMARY KEY,

Fio VARCHAR(25),

Home_Phone VARCHAR(6),

Mobil_Phone VARCHAR(11),

UNIQUE (Home_Phone, Mobil_Phone));. Если попытаться добавить в таблицу строки (позже будет рассмотрено, как это можно сделать), в которых значения полей number и Fio различны, а поля Home_Phone и Mobil_Phone равны NULL, то вставка этих данных пройдет успешно, так как считается, что каждое (NULL, NULL) в уникальных столбцах (Home_Phone, Mobil_Phone) отличается от любого другого (NULL, NULL). Однако попытка вставить строки с одинаковыми значениями в одном из уникальных столбцов (Home_Phone или Mobil_Phone) и с NULL значениями в другом не удастся.

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

CHECK (<условие_проверки>) может использоваться не только при определении отдельного столбца, что было рассмотрено выше, но и в качестве табличного ограничения. Это полезно в тех случаях, когда условие необходимо задать на значениях нескольких столбцов. Синтаксис <условия_проверки> фактически повторяет рассмотренный выше для определения ограничения столбца, но могут использоваться имена нескольких различных столбцов таблицы, на которую накладывается ограничение.

Предположим, что поступившая ремонтная заявка должна выполняться не позднее, чем через неделю после поступления (т.е. дата выполнения должна быть в диапазоне от дня поступления до даты на 7 дней позднее). Запрос на создание таблицы Request с учетом этого ограничения можно представить в следующем виде:

CREATE TABLE Request

(RequestCD INTEGER NOT NULL PRIMARY KEY,

AccountCD VARCHAR(6) REFERENCES Abonent(AccountCD) ON DELETE CASCADE ON UPDATE CASCADE,

предыдущаяследующая