Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по лабам.docx
Скачиваний:
11
Добавлен:
30.03.2015
Размер:
238.26 Кб
Скачать

Лабораторная работа №8 Транзакции

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

Если на этапе выполнения одного из запросов происходит сбой, это может нарушить целостность БД (товар может быть продан, а число товарных позиций на складе не обновлено). Чтобы сохранить целостность БД, все изменения должны выполняться как единое целое. Либо все изменения успешно выполняются, либо, в случае сбоя, БД принимает состояние, которое было до начала изменений. Это обеспечивается средствами обработки транзакций.

Транзакция– последовательность операторов SQL, выполняющихся как единая операция, которая не прерывается другими клиентами.

MS

Пример транзакции:

DECLARE @First int, @Second int

BEGIN TRANSACTION

UPDATE Skidka

SET [Razmer skidki]=500

WHERE [N skidki]=5

SET @First=@@ERROR

SAVE TRANSACTION SS

UPDATE Skidka

SET [Vid skidki]='Pensioneram'

WHERE [N skidki]=5

SET @Second=@@ERROR

IF @Second<>0

ROLLBACK TRANSACTION SS

IF @First=0 AND @Second=0

BEGIN

COMMIT TRANSACTION

PRINT 'Транзакция завершена'

END

ELSE

ROLLBACK TRANSACTION

ORACLE

Транзакция, которая обновляет стоимость услуги, или не обновляет её вообще:

BEGIN

savepoint sp;

UPDATE Usluga

SET stoimost_uslugi=stoimost_uslugi*1.3

WHERE n_uslugi=1;

UPDATE Usluga

SET stoimost_uslugi=stoimost_uslugi*1.2

WHERE n_uslugi=2;

exception

WHEN others

THEN

ROLLBACK TO SAVEPOINT sp;

COMMIT;

END;

Лабораторная работа №9

Работа с представлениями

Основная структурная единица реляционных БД – таблицы, но язык SQL предоставляет еще один способ организации данных. Представление – это запрос на выборку, которому присваивается уникальное имя и который можно сохранять или удалять из БД как хранимую процедуру. Представления позволяют увидеть результаты сохраненного запроса так, как будто это полноценная таблица.

MS,ORACLE

Создание представлений в этих базах данных выглядит одинаково:

Представление FIODATAвыводит ФИО из таблицы Клиент и Дату из таблицы Сделка, где № Сделки соответствует № Клиента:

CREATE VIEW FIODATA

AS

SELECT Klient.FIO, Sdelka.Data

FROM Klient JOIN Sdelka

ON [N sdelki]=Klient.[N klienta]

GO

Следующее представление SdView3 извлекает данные из 3х таблиц Клиент, Сделка и Услуга, ткие что Стоимость услугиБ меньше чем 10000 и № Сделки=№ Услуги и № Сделки=№ Клиента:

CREATE VIEW SdView3

AS

SELECT Klient.FIO, Klient.Telefon, Sdelka.Data, Usluga.Opisanie

FROM Klient, Sdelka, Usluga

WHERE Usluga.[Stoimost uslugi]<10000 AND Sdelka.[N sdelki]=Usluga.[N uslugi]

AND Sdelka.[N sdelki]=Klient.[N klienta]

GO

Заключение

Результатом выполнения лабораторных работ является ознакомление с языком SQLи его особенностями в разных базах данных.

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

Поставленные задачи выполнены полностью.