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



ЗНАЕТЕ ЛИ ВЫ?

Синтаксис операторов SQL, использующих ограничения.

Поиск

Стандарт SQL описывает следующие операторы, в которых может быть использованы ограничения:

· CREATE DOMAIN - создать домен

· ALTER DOMAIN - изменить домен

· DROP DOMAIN - удалить домен

· CREATE TABLE - создать таблицу

· ALTER TABLE - изменить таблицу

· DROP TABLE - удалить таблицу

· CREATE ASSERTION - создать утверждение

· DROP ASSERTION - удалить утверждение

· COMMIT WORK - зафиксировать транзакцию

· SET CONSTRAINTS - установить момент проверки ограничений

CREATE DOMAIN Имя домена [ AS ] Тип данных

[ DEFAULT Значение по умолчанию ]
[ Имя ограничения ] Ограничение check [ Атрибуты ограничения ]

Этот оператор задает домен, на основе которого можно определять колонки таблиц. Т.к. имя колонки, которая будет основана на этом домене заранее неизвестно, то в ограничении CHECK домена для ссылки на значение этого домена используется ключевое слово VALUE. В конкретной таблице СУБД заменит слово VALUE на имя колонки таблицы

 

Работа транзакций в смеси. Проблема потери результатов обновления. Проблема незафиксированной зависимости.

Транзакция рассматривается как последовательность элементарных атомарных операций. Атомарность отдельной элементарной операции состоит в том, что СУБД гарантирует, что, с точки зрения пользователя, будут выполнены два условия:

  1. Эта операция будет выполнена целиком или не выполнена вовсе (атомарность - все или ничего).
  2. Во время выполнения этой операции не выполняются никакие другие операции других транзакций (строгая очередность элементарных операций).

Например, элементарными операциями транзакции будут считывание страницы данных с диска или запись страницы данных на диск (страница данных - это минимальная единица для дисковых операций СУБД). Условие 2 на самом деле является именно логическим условием, т.к. реально система может выполнять несколько различных элементарных операций в один и тот же момент. Например, данные могут храниться на нескольких физически различных дисках и операции чтения-записи на эти диски могут выполняться одновременно.

Элементарные операции различных транзакций могут выполняться в произвольной очередности (конечно, внутри каждой транзакции последовательность элементарных операций этой транзакции является строго определенной). Например, если есть несколько транзакций, состоящих из последовательности операций элементарных:

,

,

то реальная последовательность, в которой СУБД выполняет эти транзакции может быть, например, такой:

.

Две транзакции по очереди записывают некоторые данные в одну и ту же строку и фиксируют изменения.

Транзакция A Время Транзакция B
Чтение ---
--- Чтение
Запись ---
--- Запись
Фиксация транзакции ---
--- Фиксация транзакции
Потеря результата обновления    

Результат. После окончания обеих транзакций, строка содержит значение , занесенное более поздней транзакцией B. Транзакция A ничего не знает о существовании транзакции B, и естественно ожидает, что в строке содержится значение . Таким образом, транзакция A потеряла результаты своей работы.

Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание)

Транзакция B изменяет данные в строке. После этого транзакция A читает измененные данные и работает с ними. Транзакция B откатывается и восстанавливает старые данные.

Транзакция A Время Транзакция B
--- Чтение
--- Запись
Чтение ---
Работа с прочитанными данными ---
--- Откат транзакции
Фиксация транзакции ---
Работа с "грязными" данными    

С чем же работала транзакция A?

Результат. Транзакция A в своей работе использовала данные, которых нет в базе данных. Более того, транзакция A использовала данные, которых нет, и не было в базе данных! Действительно, после отката транзакции B, должна восстановиться ситуация, как если бы транзакция B вообще никогда не выполнялась. Таким образом, результаты работы транзакции A некорректны, т.к. она работала с данными, отсутствовавшими в базе данных.

 

Работа транзакций в смеси. Неповторяемое считывание. Фиктивные элементы (фантомы). Собственно несовместимый анализ.

Неповторяемое считывание

Транзакция A дважды читает одну и ту же строку. Между этими чтениями вклинивается транзакция B, которая изменяет значения в строке.

Транзакция A Время Транзакция B
Чтение ---
--- Чтение
--- Запись
--- Фиксация транзакции
Повторное чтение ---
Фиксация транзакции ---
Неповторяемое считывание    

Транзакция A ничего не знает о существовании транзакции B, и, т.к. сама она не меняет значение в строке, то ожидает, что после повторного чтения значение будет тем же самым.

Результат. Транзакция A работает с данными, которые, с точки зрения транзакции A, самопроизвольно изменяются.



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 270; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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