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

Обновляемые представления.




Представление, поддерживающее модификацию данных, называют обновляемым представлением.

Такие представления должны удовлетворять следующим условиям:

- любые изменения, в том числе инструкции UPDATE, INSERT и DELETE, должны ссылаться на столбцы только одной базовой таблицы;

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

- при помощи статистической функции: AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR и VARP;

- на основе вычисления. Столбец нельзя вычислить по выражению, включающему другие столбцы. Столбцы, сформированные при помощи операторов UNION, UNION ALL, CROSSJOIN, EXCEPT и INTERSECT, считаются вычисляемыми и также не являются обновляемыми;

- предложения GROUP BY, HAVING и DISTINCT не влияют на изменяемые столбцы.

Предложение TOP не используется нигде в инструкции select_statement представления вместе с предложением WITH CHECK OPTION.

 

Вышеназванные ограничения относятся ко всем подзапросам представления в предложении FROM, равно как и к самому представлению. Как правило, компонент Database Engine должен иметь возможность однозначно проследить изменения от определения представления до одной базовой таблицы.

Настройка разрешений на объекты базы данных.

Предоставление пользователю доступа к базе данных включает три шага. Вначале создается имя входа. Имя входа дает пользователю возможность подключиться к компоненту SQL Server Database Engine. Затем имя входа настраивается как пользователь в заданной базе данных. Наконец, предоставляются пользовательские разрешения на объекты базы данных. Ниже рассматриваются все три шага, а также создание представления и хранимой процедуры в виде объекта.

Чтобы получить доступ к компоненту Database Engine, необходимо иметь имя входа. Имя входа может идентифицировать пользователя как учетную запись Windows или как члена группы Windows, или имя входа может быть именем входа SQL Server, которое существует только в SQL Server. При возможности используйте проверку подлинности Windows.

По умолчанию администраторы компьютера имеют полный доступ к SQL Server. Для выполнения последующих действий нужно иметь пользователя с меньшим правом доступа; следовательно, надо создадить новую локальную учетную запись проверки подлинности Windows на компьютере. Чтобы сделать это, нужно быть администратором на своем компьютере. После этого нужно предоставить новому пользователю доступ к SQL Server.

Создание пользователя в базе данных.

1. Введём и выполним следующие инструкции (заменяя computer_name на имя компьютера), чтобы предоставить пользователю Mary доступ к базе данных TestData.

USE [TestData];

GO

CREATE USER [Mary] FOR LOGIN [computer_name\Mary]; GO

 

2. Теперь пользователь Mary имеет доступ к SQL Server и к базе данных TestData. После того как Мэри предоставлен доступ к базе данных TestData, можно создать некоторые объекты базы данных, такие как представление или хранимая процедура, а затем предоставить Мэри доступ к ним. Напомним, что представление является хранимой инструкцией SELECT, а хранимая процедура представляет собой одну или более инструкций Transact-SQL, выполняемых в виде пакета.

Представления запрашиваются так же, как таблицы, и не принимают параметры. Хранимые процедуры сложнее, чем представления. Хранимые процедуры содержат как входные, так и выходные параметры и могут содержать инструкции, которые управляют потоком кода, например IF и WHILE. Использование хранимых процедур для всех повторяющихся действий в базе данных является хорошим стилем программирования.

В нижеследующем примере используется инструкция CREATE VIEW, чтобы создать представление, которое выбирает только два столбца в таблице Products. Затем с помощью инструкции CREATE PROCEDURE создается хранимая процедура, которая принимает цену в качестве параметра и возвращает только те продукты, цена которых меньше значения, указанного в качестве параметра.

3. Создание представления

Выполним следующую инструкцию, создающую очень простое представление, которое выполняет инструкцию select и возвращает названия и цены продуктов пользователю. CREATE VIEW vw_Names

AS SELECT ProductName, Price FROM Products;

GO

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

С представлениями обращаются так же, как с таблицами. Используем инструкцию SELECT, чтобы получить доступ к представлению. SELECT * FROM vw_Names;

GO

 

5. Создание хранимой процедуры

В следующем примере создается хранимая процедура pr_Names с входным параметром @VarPrice типа money. Эта хранимая процедура печатает инструкцию Products less than, соединенную операцией сцепления с входным параметром, тип которого преобразуется из money в varchar(10). Затем процедура выполняет инструкцию SELECT на представлении, передавая входной параметр в предложение WHERE. Возвращаются все продукты, цена которых меньше значения входного параметра. CREATE PROCEDURE pr_Names @VarPrice money

AS BEGIN

-- The print statement returns text to the user PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));

-- A second statement starts here SELECT ProductName, Price FROM vw_Names

WHERE Price < @varPrice;

END GO

 

6. Тестирование хранимой процедуры

Чтобы выполнить хранимую процедуру, введите и выполните следующую инструкцию. Эта процедура должна возвратить названия двух продуктов, введенных в таблицу Products на занятии 1, цена которых меньше 10.00. EXECUTE pr_Names 10.00;

GO

Инструкция GRANT.

Будучи администратором, можно выполнять инструкцию SELECT из таблицы Products и представления vw_Names, а также выполнять процедуру pr_Names; однако Mary всего этого не может. Чтобы предоставить Mary необходимые разрешения, воспользуйтесь инструкцией GRANT.

Инструкция GRANT предоставляет разрешения на выполнение инструкций EXECUTE для хранимой процедуры, инструкций SELECT, INSERT, UPDATE и DELETE, чтобы получить доступ к данным и изменять их. Инструкция GRANT также используется для других разрешений, например для разрешений на создание таблиц.

 

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

GRANT EXECUTE ON pr_Names TO Mary;

GO

В данном сценарии Mary имеет доступ только к таблице Products посредством хранимой процедуры. Если Mary нужно выполнять инструкцию SELECT к представлению, нужно выполнить инструкцию GRANT SELECT ON vw_Names TO Mary

Чтобы удалить доступ к объектам базы данных, воспользуйтесь инструкцией REVOKE.

Поделиться:





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



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