ПримерИзменить столбец, добавив ограничение NOT NULL.ALTER TABLE Товар ALTER COLUMN
Название VARCHAR(40) NOT NULL
ПримерДобавитьограничениеуникальностизначения. ALTER TABLE Товар ADD CONSTRAINT
u1 UNIQUE(Название)
ПримерСоздатьумолчаниеидобавитьумолчаниестолбцу. CREATE DEFAULT df1 AS 0
sp_bindefault 'df1', 'Товар.Остаток' CREATE DEFAULT df2 AS GETDATE()
sp_bindefault 'df2', 'Товар.Дата'
Пример.Создатьправило идобавитьправило столбцу. CREATE RULE r1 AS @m IN
('мебель','бытовая химия','косметика') sp_bindrule 'r1','Товар.Тип'
Механизмы процедурной целостности
Для поддержания согласованности данных могут использоваться декларативные и процедурные механизмы. Распространённым методом обеспечения процедурной целостности являются триггеры.
Диаграммы–этокомпонентыБД,которыеблокируютудалениезаписей из первичных таблиц если существуют связанные с ними записи во вторичных таблицах. Следовательно, диаграммы предотвращают нарушение целостности данных. В SQL Server диаграммы создаются при помощи мастера диаграмм.
Триггеры – это аналог процедур обработчиков событий. То есть онивыполняют команды SQL если происходят какие-либо действия с таблицей (Например: добавление, изменение или удаление записей). При помощи триггеров можно организовать автоматическое удаление записей из вторичной таблицы при удалении связанной с ними записи из первичной таблицы. [1]
Рассмотрим создание триггеров при помощи языка SQL. Создание триггеров
Триггеры представляют собой особый вид хранимых процедур, привязанных к таблицам и представлениям, которые вызываются в результате исполнения операторов INSERT, UPDATE или DELETE языка Transact-SQL. Сами триггеры создаются с помощью Transact-SQL.
Один и тот же триггер способен реагировать как только на одно событие INSERT, UPDATE или DELETE, так и одновременно на несколько.
Триггер не может быть установлен для событий временной или системной таблицы. Кроме того, триггеры INSTEAD OF DELETE и INSTEAD OF UPDATE нельзя определять в таблицах, в которых определены ограничения каскадной ссылочной целостности ON DELETE и/или ON UPDATE.
Для обнаружения модификации данных в триггерах используются две псевдотаблицы: Inserted и Deleted. При этом в момент срабатывания триггера новые или изменённые строки попадают в таблицу Inserted, а удалённые в таблицу Deleted. В теле триггера на языке Transact-SQL выполняются запросы к этим таблицам для анализа данных и принятия решения. Таблицы Inserted и Deleted имеют точно такую же структуру как и таблица/представление, к которым привязан триггер, и хранятся в памяти. [13]
Существует два типа триггеров:
INSTEAD OF – выполняется вместо вызвавшей операции (заменяет операцию);
AFTER – выполняется после события, вызвавшего срабатывание (этот класс используется по умолчанию).
Допускается привязывать к таблице триггеры сразу обоих классов.
При этом первым срабатывает INSTEAD OF, а вторым – AFTER.
Глубина при вложенных и рекурсивных вызовах триггеров не может превышать 32. [8]
Создание триггера осуществляется с помощью команды CREATE TRIGGER:
Для создания триггера на вкладке нового запроса необходимо набрать команду CREATE TRIGGER, имеющую следующий синтаксис:
CREATE TRIGGER <Имя триггера> ON <Имя таблицы>
FOR [WITH ENCRYPTION]
AS <Команды SQL> Здесь:
Имя триггера – это имя создаваемого триггера.
Имя таблицы – имя таблицы, для которой создаётся триггер.
Если используется параметр AFTER, то триггер выполняется после события, а если параметр INSTEAD OF, то выполняется вместо события.
Параметры INSERT, UPDATE и DELETE определяют событие, при котором (или вместо которого) выполняется триггер.
Параметр WITH ENCRYPTION – предназначен для включения шифрования данных при выполнении триггера.
Команды SQL – это SQL команды, выполняемые при активизации триггера. [4]
Рассмотрим примеры создания различных триггеров для таблицы