SQL-выражения для управления транзакциями 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

SQL-выражения для управления транзакциями



Для управления транзакциями имеется три выражения:

SET TRANSACTION - Начинает транзакцию и определяет ее поведение.

COMMIT - Сохраняет изменения, внесенные транзакцией, в базе данных и завершает транзакцию.

ROLLBACK - Отменяет изменения, внесенные транзакцией, и завершает транзакцию.

Запуск транзакции

В общем виде, синтаксис команды SQL для запуска транзакции:

SET TRANSACTION [Access mode] [Lock Resolution]

[Isolation Level] [Table Reservation]

Значения, принимаемые по-умолчанию:
выражение SET TRANSACTION равносильно выражению

SET TRANSACTION READ WRITE WAIT ISOLATION LEVEL SNAPSHOT

Access Mode - определяет тип доступа к данным. Может принимать два значения: READ ONLY - указывает, что транзакция может только читать данные и не может модифицировать их. READ WRITE - указывает, что транзакция может читать и модифицировать данные. Это значение принимается по умолчанию.

Пример:

SET TRANSACTION READ WRITE

Isolation Level - определяет порядок взаимодействия данной транзакции с другими в данной базе. Может принимать значения:

· SNAPSHOT - значение по умолчанию. Внутри транзакции будут доступны данные в том состоянии, в котором они находились на момент начала транзакции. Если по ходу дела в базе данных появились изменения, внесенные другими завершенными транзакциями, то данная транзакция их не увидит. При попытке модифицировать такие записи возникнет сообщение о конфликте.

· SNAPSHOT TABLE STABILITY - предоставляет транзакции исключительный доступ к таблицам, которые она использует. Другие транзакции смогут только читать данные из них.

· READ COMMITTED - позволяет транзакции видеть текущее состояние базы.

Конфликты, связанные с блокировкой записей происходят в двух случаях:

· Транзакция пытается модифицировать запись, которая была изменена или удалена уже после ее старта. Транзакция типа READ COMMITTED может вносить изменения в записи, модифицированные другими транзакциями после их завершения.

· Транзакция пытается модифицировать таблицу, которая заблокирована другой транзакцией типа SNAPSHOT TABLE STABILITY.

Lock Resolution - определяет ход событий при обнаружении конфликта блокировки. Может принимать два значения:

· WAIT - значение по умолчанию. Ожидает разблокировки требуемой записи. После этого пытается продолжить работу.

· NO WAIT - немедленно возвращает ошибку блокировки записи.

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

· PROTECTED READ - запрещает обновление таблицы другими транзакциями, но позволяет им выбирать данные из таблицы.

· PROTECTED WRITE - запрещает обновление таблицы другими транзакциями, читать данные из таблицы могут только транзакции типа SNAPSHOT или READ COMMITTED.

· SHARED READ - самый либеральный уровень. Читать могут все, модифицировать - транзакции READ WRITE.

· SHARED WRITE - транзакции SNAPSHOT или READ COMMITTED READ WRITE могут модифицировать таблицу, остальные - только выбирать данные.

Завершение транзакции

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

  • COMMIT - сохраняет внесенные транзакцией изменения в базу данных. Это означает, что транзакция завершена успешно.
  • ROLLBACK - откат транзакции. Транзакция завершается и никаких изменений в базу данных не вносится. Данная операция выполняется при возникновении ошибки при выполнении операции (например, при невозможности обновить запись).

 

 


Технологии «клиент-сервер»

Сервер – это компьютер, управляющий некоторыми ресурсами и предоставляющий их для коллективного использования. Сервера бывают почтовые, баз данных, вычислительные.

Клиент – это программа или компьютер, обращающийся к услугам сервера

Существуют разные технологии клиент-сервер.

Любая программа может быть представлена из нескольких частей:

1. Ввод/вывод (интерфейсная часть);

2. Вычисление на основе каких-либо бизнес правил;

3. Обращение к данным;

4. Управляющая часть, создает единый алгоритм.

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

1 вариант - файловый сервер.

Введем обозначения: К – клиент, С – сервер.

К выполняет 1,2,4 части, а на С содержится информация, необходимая для запроса, т.е. С выполняет 3 часть.

запрос

К С

ответ-файл

В данной технологии основная нагрузка падает на клиента.

2 вариант – удаленный доступ.

Данная технология позволяет получить только ту информацию, которая нас интересует, а не весь файл.

Запросы пишутся на динамическом SQL. А в ответ получаем ту порцию информации, которую запросили, эта порция информации называется курсором.

Динамический SQL - это операторы SQL, которые передаются и выполняются на сервере.

Имеют место следующие операторы:

Prepare имя_оператора from строка, Select, Insert, Delete, Update

Execute имя_оператора – позволяет выполнить запомненный на сервере оператор;

Drop имя_оператора – позволяет удалит оператор;

Эти операторы передаются в интерактивном режиме, а если хотим записать в рамках какой-то программы, то, например на Паскале, это будет выглядеть так:

Exec sql “sql оператор”.

Описание курсора на SQL:

Declare имя_курсора [scroll] cursor for подзапрос [for update].

Курсор может быть обычным, то есть просматриваемым в одном направлении, от начала к концу, если стоит scroll, то просматривать курсор можно в любом направлении. Если стоит for update, то это значит, что курсор изменяемый, все изменения будут запоминаться на сервере.

Операции с курсором:

Open имя_курсора – позволяет получить курсор;

Fetch имя_курсора – позволяет перейти к следующей записи курсора, если перед именем курсора поставить Last, то перейдем к последней записи, First – к первой записи, Current к текущей;

Close имя_курсора – закрытие курсора, но он остается определенным;

Free имя_курсора – удаление курсора.

3 вариант – сервер Базы Данных.

 
 

 


Бизнес-правила хранятся на сервере в виде хранимых процедур. Хранимые процедуры – это программы, написанные на некотором языке хранимых процедур с SQL вставками. Их можно написать заранее и поместить в библиотеку.



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 97; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.63.87 (0.007 с.)