Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Однако, когда информация будет добавлена, строка исчезнет из представления, поскольку название города отлично от Москвы.




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

Для исключения подобных моментов служит WITH CHECK OPTION в определении представления. Фраза размещается в определении представления, и все команды модификации будут подвергаться проверке.

Если в операторе CREATE VIEW будет указана фраза WITH CHECK OPTION, то СУБД станет осуществлять контроль за тем, чтобы в исходные таблицы базы данных не была введена ни одна из строк, не удовлетворяющих предложению WHERE в определяющем запросе. Этот механизм гарантирует целостность данных в представлении.

Для представления

CREATE VIEW view1 AS

SELECT КодКлиента, Фамилия, ГородКлиента

FROM Клиент

WHERE ГородКлиента='Москва'

WITH CHECK OPTION

вышеупомянутая вставка значений (INSERT INTO view1 VALUES (12, 'Петров', 'Самара')) будет отклонена системой.

 

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

Выборка данных из представления view1:

SELECT * FROM view1

 

Представления и элемент ORDER BY.

Напомним, что присутствие ORDER BY запрещено в запросе, определяющем табличное выражение (стандарт ANSI SQL не разрешает применять элемент order BY в запросах, определяющих табличные выражения).

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

Пример:

CREATE VIEW Sales.USACusts

AS

SELECT

custid, companyname, contactname, contacttitle, address,

city, region, postalcode, country, phone, fax

FROM Sales.Customers

WHERE country = N'USA';

GO

 

SELECT custid, region,companyname

FROM Sales.USACusts;

GO

Результат:

При изменении представления:

CREATE VIEW Sales.USACusts

AS

SELECT

custid, companyname, contactname, contacttitle, address,

city, region, postalcode, country, phone, fax

FROM Sales.Customers

WHERE country = N'USA'

Order BY region

выдается ошибка: Msg 1033, Level 15, State 1, Procedure USACusts, Line 9

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.

 

Чтобы избежать ошибки, следует задавать Order BY во внешнем запросе к представлению:

SELECT custid, region,companyname

FROM Sales.USACusts--представление

Order BY region

Результат:

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...