Проверяемый текст
Пушников А.Ю. Введение в системы управления базами данных. Учебное пособие/Изд-е Башкирского ун-та. - Уфа, 1999.
[стр. 36]

• ALTER DOMAIN изменить домен.
• DROP DOMAIN удалить домен.
• CREATE TABLE создать таблицу.
• ALTER TABLE изменить таблицу.
• DROP TABLE удалить таблицу.
• CREATE ASSERTION создать утверждение.
• DROP ASSERTION удалить утверждение.
• COMMIT WORK зафиксировать транзакцию.
SET CONSTRAINTS установить момент проверки ограничений.
CREATE DOMAIN Имя домена [AS] Тип данных [DEFAULT Значение по умолчанию] [Имя ограничения] Ограничение check [Атрибуты ограничения] Этот оператор задает домен, на основе которого можно определять колонки таблиц.
Т.к.
имя колонки, которая будет основана на этом домене заранее неизвестно, то в ограничении CHECK домена для ссылки на значение этого домена используется ключевое слово VALUE.
В конкретной таблице СУБД заменит слово VALUE на имя колонки таблицы.

Пример 1.
Приведенный ниже оператор создает домен Salary на основе целочисленного типа данных, причем значения из этого домена не могут принимать неположительные значения (но могут принимать значение NULL!).
По умолчанию это ограничение проверяется немедленно, но может быть и отложенным: CREATE DOMAIN Salary AS integer CHECK (VALUE > 0) DEFERRABLE INITIALLY IMMEDIATE ALTER DOMAIN Имя домена {SET DEFAULT Значение
no умолчанию} {DROP DEFAULT} {ADD [Имя ограничения] Ограничение check [Атрибуты ограничения]} {DROP CONSTRAINT Имя ограничения} 36
[стр. 146]

5 строка не допустима.
Предложение MATCH игнорируется, если все столбцы внешнего ключа имеют ограничения NOT NULL.
Предложения ON UPDATE и ON DELETE.
Предложения ON UPDATE и ON DELETE определяют действия, исполняемые по ссылке.
Действия, исполняемые по ссылке, в основном описаны выше в этой главе.
Сложности в понимании того, как выполняются эти действия, возникают если установлено MATCH PARTIAL и колонки, входящие в состав внешнего ключа, допускают NULL-значения.
Подробно эти действия с учетом возможных сложностей описаны в [9].
Атрибуты ограничения.
Атрибуты ограничения определяют, в какой момент проверяются ограничения.
Ограничение может быть определено как NOT DEFERRABLE (неоткладываемое) или DEFERRABLE (откладываемое).
Если атрибуты ограничения не указаны, то по умолчанию принимается NOT DEFERRABLE.
Если ограничение определено как NOT DEFERRABLE (неоткладываемое), то ограничение всегда проверяется сразу после выполнения каждого оператора INSERT, UPDATE или DELETE, которые могут привести к нарушению ограничения.
Если ограничение определено как DEFERRABLE (откладываемое), то ограничение может иметь два режима проверки немедленно после выполнения операции или в конце транзакции.
Режим проверки может быть изменен в любой момент внутри транзакции командой SET CONSTRAINTS.
При определении ограничения можно указать начальный режим проверки INITIALLY DEFERRED (начально отложенное) или INITIALLY IMMEDIATE (начально немедленно проверяемое).
Синтаксис операторов SQL, использующих ограничения Стандарт SQL описывает следующие операторы, в которых может быть использованы ограничения:  CREATE DOMAIN создать домен  ALTER DOMAIN изменить домен  DROP DOMAIN удалить домен  CREATE TABLE создать таблицу  ALTER TABLE изменить таблицу  DROP TABLE удалить таблицу  CREATE ASSERTION создать утверждение  DROP ASSERTION удалить утверждение  COMMIT WORK зафиксировать транзакцию  SET CONSTRAINTS установить момент проверки ограничений CREATE DOMAIN Имя домена [AS] Тип данных [DEFAULT Значение по умолчанию] [Имя ограничения] Ограничение check [Атрибуты ограничения] Этот оператор задает домен, на основе которого можно определять колонки таблиц.
Т.к.
имя колонки, которая будет основана на этом домене заранее неизвестно, то в ограничении CHECK домена для ссылки на значение этого домена используется ключевое слово VALUE.
В конкретной таблице СУБД заменит слово VALUE на имя колонки таблицы.


[стр.,147]

Пример 18.
Приведенный ниже оператор создает домен Salary на основе целочисленного типа данных, причем значения из этого домена не могут принимать неположительные значения (но могут принимать значение NULL!).
По умолчанию это ограничение проверяется немедленно, но может быть и отложенным: CREATE DOMAIN Salary AS integer CHECK (VALUE > 0) DEFERRABLE INITIALLY IMMEDIATE ALTER DOMAIN Имя домена {SET DEFAULT Значение
по умолчанию} {DROP DEFAULT} {ADD [Имя ограничения] Ограничение check [Атрибуты ограничения]} {DROP CONSTRAINT Имя ограничения} Этот оператор изменяет имеющийся домен.
Стандарт запрещает вносить несколько изменений одной командой ALTER DOMAIN.
Т.е.
если требуется удалить ограничение CHECK и добавить значение по умолчанию, то придется выполнить два оператора ALTER DOMAIN.
DROP DOMAIN Имя домена CASCADE RESTRICT Этот оператор уничтожает имеющийся домен.
Если указана опция RESTRICT, то домен не уничтожается, если имеются ссылки на него из столбцов таблиц.
Если указана опция CASCADE, то происходят следующие действия:  Тип данных домена передается столбцам, основанным на этом домене.
 Если столбец не имеет значения по умолчанию, а для домена значение по умолчанию определено, то оно становится значением по умолчанию для столбца.
 Все ограничения домена становятся ограничениями столбца.
CREATE TABLE Имя таблицы ( {Определение столбца [Ограничение таблицы]}.,..) Определение столбца::= Имя столбца {Имя домена Тип данных [Размер]} [Ограничение столбца…] [DEFAULT Значение по умолчанию] Этот оператор (синтаксис приведен не полностью пропущены опции создания временных таблиц) создает таблицу базы данных.
В таблице обязано быть не менее одного определения столбца.
В таблице может быть определено несколько ограничений (в том числе и ни одного).
Каждый столбец должен иметь имя и быть определен на некотором типе данных или на некотором домене.
Ограничения домена становятся ограничениями столбца.
Кроме того, столбец может иметь дополнительные ограничения.
Если домен имеет значение по умолчанию и в определении столбца определено значение по умолчанию, то значение для столбца перекрывает значение для домена.
Пример 19.
CREATE TABLE Salespeaple (Salespeaple_Id Id_Nums PRIMARY KEY, Fam CHAR(20) NOT NULL, Im CHAR(15), BirthDate DATE, Salary Salary_Domain DEFAULT 1000, City_Id INTEGER REFERENCES City ON UPDATE CASCADE ON DELETE RESTRICT,

[Back]