Решение практических


Пример Изменить столбец, добавив ограничение NOT NULL. ALTER TABLE Товар ALTER COLUMN Название VARCHAR(40) NOT NULL Пример



бет41/55
Дата12.05.2023
өлшемі1,43 Mb.
#92531
түріРешение
1   ...   37   38   39   40   41   42   43   44   ...   55
Байланысты:
СУБД-1

Пример Изменить столбец, добавив ограничение 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]

Рассмотрим примеры создания различных триггеров для таблицы


Достарыңызбен бөлісу:
1   ...   37   38   39   40   41   42   43   44   ...   55




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет