Программирование >>  Реализация баз данных 

1 ... 104 105 106 [ 107 ] 108 109 110 ... 162


Просмотр данных через представления

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

вращаемые представлением из БД

USE Northwind

SELECT *

FROM CustomerOrders

Как и в случае таблиц, представление позволяет более конкретно указать тип данных, которые представление. В следующем примере оператор SELECT извлекает

значения столбцов OrderlD и ОгёегОаедля любых заказов, сделанных компанией Q U1СК-Stop:

USE Northwind

SELECT Orde-ID. OrderDate

FROM CustomerOrders

WHERE CompanyNafne = quick-stop

ORDER OrderlD

Этот оператор также задает упорядочение результирующего набора по значению столбца OrderlD.

Модификация данных через представления

Во всех версиях SQL Server представления разрешается изменять есть они могут целевыми объектами операторов UPDATE, DELETE или INSERT), если модификация затрагивает только одну из базовых таблиц представления. SQL Server 2000 поддерживает более сложные типы операторов UPDATE, DELETE и INSERT, модифицирующих представления. Например, для поддержки операторов UPDATE, DELETE и INSERT можно определить в представлении триггеры INSTEAD кото-

рые следует сделать в базовых таблицах. Кроме того, секционированные представления поддерживают операторы UPDATE, DELETE и сразу несколь-

ко ков представления.

Занятие 3, Доступ к данным через представления

Созданное представление открывает доступ ым. которые возвращает запрос SELECT мяющий представление. Большую часть операций, разрешенных для запроса, можно применить и к представлению. В этом занятии рассказано, как использовать представления для просмотра и модификации данных, возвращаемых запросом SELECT.

Изучив материал этого занятия, вы сможете:

D использовать представления для просмотра данных; D использовать представления для добавления, обновления и удаления данных.

Продолжительность занятия - около 35 минут.



Модификация данных чере вые представления

Через представления разрешается модифицировать данные, но с некоторыми ограничениями. Если не использован триггер INSTEAD OF или это представление не является обновляемым секционированным представлением, его данные удастся модифицировать, если представление соответствует следующим требованиям:

в конструкции FROM определения представления содержится по крайней мере одна

таблица. Представление не может быть основано только на выражении;

в списке выбора не используются атретирующие функции(AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV. STDEVP, VARn VARP) и конструкции GROUP BY, UNION, DISTINCT, TOP. Однако агргируюшие функции разрешается применять в подзапросе, определенном в FROM при условии, что ими значения не изменяются;

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

Перед модификацией данных через представление без использования триггера INSTEAD OF или через обновляемое секционированное представление следует учесть следующие правила:

если в определении представления использована конструкция WITH CHECK* >PTTON. то все модификации должны критерию, установленному оператором SELECT, определяющим представление. При применении этой конструкции нельзя модифицировать строки так, чтоГ)ы они исчезали из представления. Любая модификация, порождающая такую ситуацию, отменяется, и выводится сообщение об ошибке;

SQL Server должен быть способен однозначно разрешить операцию модификации до определенных строк одной из базовых таблиц представления. Нельзя использовать команды, один из операторов которых модифицирует данные нескольких базовых таблиц. Поэтому указанные в операторах UPDATE или INSERT, должны принадлежать к одной и той же базовой таблице, определенной в представлении;

значения всех модифицируемых столбцов базовой таблицы, не допускающие пустых значений, следует задавать оператором INSERT либо определениями DEFAULT. Это гарантирует наличие значений у всх столбцов базовой таблицы, для которых они необходимы;

все модификации столбцов базовой таблицы должны соответствовать определенным для этих столбцов интервалам допустимых значений ввода пустых значений, ограничениям, определениям DEFAULT и т. д.) Например, при удалении строки не должно нарушаться ни одно FOREIGN KEY в связанных таблицах, чтобы операция удаления завершилась успешно;

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

Кроме того, чтобы удалить из представления, в конструкции FROM в определе-

нии представления следует указать только одну таблицу. В представлении нельзя использовать операторы READTEXT и WRITETEXT со столбцами типа text, :н.\, или image.

Добавление данных через представление

что в БД создается представление, возвращающее

тор покупателя и имя компании из Customers:

USE Northwind

CREATE VIEW CustomerVlew



SELECT CustomerlD, CompanyName

FROM Customers

Чтобы вставить данные через представление erView, следует воспользоваться оператором INSERT (как показано в примере ниже):

USE Northwind

INSERT CustomerView

VALUES CTESTT, Test Company)

Этот оператор добавляет новую строку в таблицу Customers. Поскольку оба столбца в таблице допускают пустые значения, их значения задавать не обязательно.

Изменение данных через представление

Для модификации данных через представление используется оператор UPDATE (как показано в следующем примере):

USE Northwind UPDATE CustomerView SET CustomerlD = ТЕЗТг WHERE CustomerlD = TESTI

Этот оператор изменяет идентификатор компании Test Company на TEST2. Удаление данных через представление

Чтобы удалить данные через представление, следует воспользоваться оператором DELETE (как показано в следующем примере):

USE Northwind

DELETE CustomerView

WHERE CustomerlD ТЕЗТЭ

Этот оператор удаляет ины Customers строку со сведениями о компании Test Company,

Модификация данных через секционированные представления

Если локальное или распределенное секционированное представление не относится к

обновляемым, оно может лишь выполнять функции неизменяемой копии исходной таблицы. Обновляемое распределенное представление обладает всеми возможностями исходной таблицы.

Представление считается обновляемым и распределенным, если оно определено с помощью операторов SELECT, результирующие наборы которых объединены посредством оператора UNION ALL. Каждый оператор SELECT ссылается на одну из базовых таблиц SQL Server. Эта таблица может быть как локальной, так и связанной. На таблицы ссылаются с помощью тгпонентных имен, а также функций OPENROWSET или OPENDATASOURCE (но нельзя использовать функцию OPENROWSET или OPENDATASOURCE, задающую транзитный запрос).

В дополнение к правилам, определенным для обновляемых секционированных представлений, операторы, ссылающиеся на такое представление, должны соответствовать

правилам, заданным для операторов INSERT, UPDATE и DELETE.

данные через секционированные представления ся только в Microsoft SQL Server 2000 Enterprise Edition или Microsoft SQL Server 2000 Developer Edition.



1 ... 104 105 106 [ 107 ] 108 109 110 ... 162

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика