Однако, когда информация будет добавлена, строка исчезнет из представления, поскольку название города отлично от Москвы.
Иногда такой подход может стать проблемой, т.к. данные уже находятся в таблице, но пользователь их не видит и не в состоянии выполнить их удаление или модификацию. Для исключения подобных моментов служит 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 Результат:
Читайте также: A- механические свойства материала из которого будет изготовлен протез Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|