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

1 ... 99 100 101 [ 102 ] 103 104 105 ... 346


воречий, используя триггер INSTEAD OF для анализа данных, подвергаемых модифи-1сации, и явно указывая СУБД SQL Server, какие действия необходимо выполнить с модифицируемыми данными.

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

По умолчанию, если для вставки данных используется представление, то необходимо предусмотреть возможность передачи в операторе вставки значений во все обязательные столбцы (столбцы, которые не допускают использования NULL-значений). Кроме того, само это представление должно содержать в основополагающем запросе оператор SELECT, относящийся к единственной таблице, или по крайней мере вставка данных с помощью представления должна ограничиваться воздействием только на одну таблицу, а также должны быть предусмотрены данные для всех обязательных столбцов. Следует отметить, что требование задавать значения для всех обязательных столбцов не подразумевает указания всех этих столбцов в списке выборки основополагающего оператора SELECT представления. Дело в том, что для предоставления значений, которые должны быть вставлены в столбцы, не допускающие использования неопределенных значений, вполне могут быть применены заданные по умолчанию значения. Таким образом, чтобы обеспечить вставку данных с помощью представления, выполняя операторы INSERT, достаточно обеспечить, чтобы этим представлением были охвачены все столбцы, для которых не предусмотрены заданные по умолчанию значения и которые не допускают наличия в них NULL-значений. Вполне очевидно, что единственный способ достичь этой цели в любых обстоятельствах состоит в применении триггера INSTEAD OF.

Проверка данных, вставляемых с помощью представления, - ключевое слово with check option

Многие средства СУБД SQL Server мало известны в широких кругах разработчиков, а возможности, предоставляемые конструкцией WITH CHECK OPTION, относятся к числу наименее известных. В основе применения этой конструкции лежит простое правило - обновление или вставка данных с помощью представления, в котором задана конструкция WITH CHECK OPTION, осуществляется, только если строка, полученная в результате применения этой операции обновления или вставки, соответствует критериям, допускающим ее включение в это представление. Иначе говоря, строка, полученная в результате вставки или обновления, должна соответствовать критериям конструкции WHERE, которая определена в операторе SELECT, лежащем в основе представления.

Редактирование представлений с помощью операторов языка t-sql

Для внесения изменений в определения представлений применяются два способа, основанные на использовании операторов языка SQL: модификация представления с помощью оператора ALTER VIEW или его уничтожение и повторное создание с помощью оператора CREATE VIEW. Но при использовании оператора ALTER VIEW следует помнить, что его выполнение также приводит к полной замене существующего представления.



Различия между способами модификации определения представлений, в которых используется оператор ALTER VIEW или CREATE VIEW, заключаются лишь в следующем: при выполнении оператора ALTER VIEW предполагается, что рассматриваемое представление уже существует, а при выполнении оператора CREATE VIEW такое предположение не делается.

После вьшолнения оператора ALTER VIEW сохраняются все права на использование представления, предоставленные пользователям.

После вьшолнения оператора ALTER VIEW сохраняется вся информация о зависимостях.

Наиболее важным является второе из указанных различий. Если не учитывать этого различия, то вьшолнение оператора DROP для уничтожения представления, а затем создание представления с помощью оператора CREATE приводит почти к таким же результатам, как и при использовании оператора ALTER VIEW. Но возникает важная проблема, связанная с тем, что приходится снова определять всю структуру прав, согласно которой СУБД принимает решение о том, кто может и не может применять это представление.

Удаление представлений

Синтаксис оператора уничтожения представлений является чрезвычайно простым: DROP VIEW <view name>, [<view name>, [ -n]]

После вьшолнения оператора удаления представление становится недоступным.

Учет наличия представлений - ознакомление с существующим кодом

На практике часто возникает необходимость ознакомиться с определением одного из представлений, которые применяются в базе данных. После изучения сведений, изложенных в предьщущих разделах, должно быть очевидно, что наиболее удобный способ решения этой задачи состоит в использовании программы Management Studio для вьшолнения тех же действий, которые осуществляются для редактирования представления. Перейдите в дереве объектов к подузлу Views, выберите обозначение представления, которое необходимо отредактировать, щелкните на этом обозначении правой кнопкой мыши и выберите во всплывающем меню команду Modify View. Откроется окно, в котором будет показан код определения представления с выделенными разным цветом синтаксическими конструкциями.

Но, к сожалению, для ознакомления с кодом представления не всегда имеется возможность воспользоваться программой Management Studio (безусловно, кроме этой программы существуют другие инструментальные средства с меньшими возможностями, но они здесь не рассматриваются). Тем не менее для ознакомления с фактическим определением представления можно воспользоваться следующими вариантами:

вызвать на вьшолнение процедуру sp he 1рt ext;

открыть системную таблицу syscomments.



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

Рассмотрим пример выполнения процедуры sp helptext для ознакомления с кодом одного из представлений, предусмотренных в базе данньгх AdventureWorks, - с представлением vStateProvinceCountryRegion: EXEC sp helptext Person.vStateProvinceCountryRegion

Обратите внимание на то, что имя представления заключено в кавычки. Это связано с тем, что данная хранимая процедура принимает только один параметр, а точка рассматривается как разграничитель, поэтому при передаче в эту процедуру строки Per son. VStateProvinceCountryRegion без кавычек будет обнаружена точка, возникнет неопределенность в отношении того, что она означает, и в связи с этим будет сформировано сообщение об ошибке.

СУБД SQL Server выводит на экран следующий код этого представления: Text

CREATE VIEW [Person].[vStateProvinceCountryRegion]

WITH SCHEMABINDING

SELECT

sp.[StateProvincelD]

,sp.[StateProvinceCode]

,sp.[IsOnlyStateProvinceFlag]

,sp.[Name] AS [StateProvinceName]

,sp.[TerritorylD]

, cr. [CountryRegionCode]

,cr.[Name] AS [CountryRegionName] FROM [Person].[StateProvince] sp

INNER JOIN [Person].[CountryRegion] cr

ON sp.[CountryRegionCode] = cr.[CountryRegionCode];

Теперь рассмотрим еще один способ ознакомления с кодом определения представления, основанный на использовании таблицы sys comments. Но следует учитывать, что при использовании таблицы syscomments (а также, применительно к рассматриваемой теме, большинства других системных таблиц) приходится не только учитывать проблемы совместимости, но и сталкиваться с дополнительными трудностями, обусловленными тем, что для обозначения всех объектов в системных таблицах используются идентификаторы объектов.

В самой СУБД SQL Server для обозначения объектов применяются идентификаторы объектов. Это - целочисленные значения, и в этом состоит отличие идентификаторов объектов от имен, которые применяют пользователи для обозначения создаваемых ими объектов. Вообще говоря, описание идентификаторов объектов выходит за рамки данной книги, но читателю нужно знать об их существовании, поскольку такие идентификаторы можно встретить в сценариях, используемых другими разработчиками, или столкнуться с ними, глубоко изучая среду SQL.



1 ... 99 100 101 [ 102 ] 103 104 105 ... 346

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