При задании ограничения 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};
изменяющее действие::=
предыдущаяследующая