Субд лекции

Темы:

Стандартный SQL-92

При задании ограничения CHECK в скобках указывается предикат, который использует значения столбцов в выражении для вычисления значения. Предикат может принимать значения TRUE, FALSE или UNKNOWN. Ограничение считается нарушенным, когда предикат принимает значение FALSE.

Стандарт SQL-92 позволяет определять ограничения так, чтобы они не проверялись до завершения текущей транзакции.

Ниже приведен пример описания трех связанных таблиц: «Spr_mat» — справочник материалов, «Spr_post» — справочник поставщиков и «Post» - таблица, содержащая информацию о поставках. При включении в базу данных информации о конкретной поставке должно проверяться наличие вводимых значений кода материала (kod_mat) и кода поставщика (kod_post) в соответствующих справочниках.

CREATE TABLE spr_mat

(kod_mat CHAR(3) NOT NULL PRIMARY KEY,

naim_mat CHAR (30) NOT NULL UNIQUE);

CREATE TABLE spr_post

(kod_post CHAR(5) NOT NULL,

naim_post CHAR (30) NOT NULL,

PRIMARY KEY (kod_post),

UNIQUE (naim_post));

CREATE TABLE post

(kod_post CHAR(5) NOT NULL, kod_mat CHAR(3) NOT NULL,

data_post DATE NOT NULL, kolv NUMERIC NOT NULL,

PRIMARY KEY (kodjpost, kodjnat, datajpost),

FORIGN KEY (kodjnat) REFERENCES sprjnat (kodjnat),

FORIGN KEY (kod_post) REFERENCES spr_post (kod_post));

Структуру существующей таблицы можно изменить с помощью оператора

ALTER TABLEимя таблицы

{ADD [COLUMN] определение столбца}

| {ALTER [COLUMN] <имя столбца> <изменяющее действие>}

| {DROP [COLUMN] имя столбца RESTRICT | CASCADE}

| {ADD определение ограничения для таблицы}

| {DROP CONSTAINT имя ограничения RESTRICT | CASCADE};

изменяющее действие::=

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