Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД_Теория(17 ответ).doc
Скачиваний:
10
Добавлен:
21.09.2019
Размер:
509.95 Кб
Скачать

Вопрос №15 Создание триггера типа update.

Триггер - это специальный тип хранимой процедуры, которая запускается автоматически системой SQL Server при модифицировании какой-либо таблицы одним из трех операторов: update, insert или delete. В отличие от других типов хранимых процедур триггеры запускаются автоматически при указанных модификациях данных; их нельзя запустить вручную по имени. Когда происходит запуск триггера, говорят, что он активизируется (fire) . Триггер создается по одной таблице базы данных, но он может осуществлять доступ и к другим таблицам и объектам других баз данных. Триггеры нельзя создать по временным таблицам или системным таблицам, а только по определенным пользователем таблицам или представлениям. Таблица, по которой определяется триггер, называется таблицей триггера.

Существует пять типов триггеров: update, insert, delete. Как следует из названий, триггер update активизируется, когда выполняются изменения (обновления) в какой-либо таблице, триггер INSERT активизируется, когда происходит вставка данных в таблицу и триггер delete активизируется, когда из таблицы удаляются данные.

Операции обновления, вставки и удаления называются событиями модификации данных. Вы можете создать триггер, который активизируется при возникновении более чем одного события модификации данных. Например, вы можете создать триггер, который будет активизироваться, когда происходит выполнение оператора update или insert, и такой триггер мы будем называть триггером update/insert. Вы можете даже создать триггер, который будет активизироваться при возникновении любого из трех событий модификации данных (триггер update/insert/delete).

Вам следует знать некоторые из других общих правил, относящихся к триггерам. Это следующие правила:

• Триггеры запускаются только после завершения оператора, который вызвал их активизацию. Например, uPDATE-триггер не будет активизироваться, пока не будет выполнен оператор update.

• Если какой-либо оператор пытается выполнить операцию, которая нарушает какое-либо ограничение по таблице или является причиной какой-то другой ошибки, то связанный с ним триггер не будет активизирован.

Чтобы увидеть, как работает триггер, создадим простую таблицу с определенным по ней триггером, который печатает определенный текст при каждой модификации.

USE Clients

GO

IF EXISTS (SELECT name FROM sysobjects

WHERE name=”Print_Update” AND type = “TR”)

DROP TRIGGER Print_Update

GO

Create trigger Print_Update

ON Clients

FOR UPDATE

AS

PRINT “The Clients table was updated”

GO

Чтобы проверить триггер, модифицируем таблицу Clients.

Вопрос №16 Понятие запроса. Команда выбор

Запрос — это операция над отношениям, результатом которой также является отношение. Язык запросов должен иметь набор выразительных средств, чтобы отвечать на широкий круг запросов и формулировать их кратко. (ЧТО надо получить, а не КАК получить).

Запрос — команда, которую вы даете вашей программе базы данных, и которая сообщает ей, чтобы она вывела определенную информацию из таблиц в память. Эта информация обычно посылается непосредственно на экран компьютера или терминала, которым вы пользуетесь, хотя, в большинстве случаев, ее можно также послать принтеру, сохранить в файле (как объект в памяти компьютера), или представить как вводную информацию для другой команды или процесса.

Запрос не меняет информацию в таблицах, а просто показывает ее пользователю.

Все запросы в SQL состоят из одиночной команды. Структура этой команды обманчиво проста, потому что вы должны расширять ее так, чтобы выполнить высоко сложные оценки и обработки данных. Эта команда называется — SELECT (ВЫБОР).

SELECT * | { [ DISTINCT | ALL] <value expression>.,..} FROM { <table name> [ <alias> ] }.,.. [ WHERE <predicate>] [ GROUP BY { <column name> | <integer> }.,..] [ HAVING <predicate>] [ ORDERBY { <column name> | <integer> }.,..] Элементы, используемые в команде SELECT

ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ

<value expression> Выражение, которое производит значение. Оно может включать в себя или содержать <column name>.

<table name> Имя или синоним таблицы или представления

<alias> Временный синоним для <table name>, определеный в этой таблице и используемый только в этой команде

<predicate> Условие, которое может быть верным или неверным для каждой строки или комбинации строк таблицы в предложении FROM.

<column name> Имя столбца в таблице.

<integer> Число с десятичной точкой. В этом случае, оно показывает <value expression> в предложении SELECT с помощью идентификации его местоположения в этом предложении.