Delphi. DBExpress. Транзакции

Как узнать поддерживает ли в принципе Ваш сервер транзакции?

Для сервера MySQL у меня получилось так…1

Поддерживает ли Ваш сервер множественные транзакции (несколько в один и тот же момент времени)?

Для множественных транзакций у сервера MySQL, у меня получилось так…

 

2_1


Как создать транзакцию в Delphi (в технологии DBExpress)?

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

Другой путь – создать транзакцию непосредственно в Delphi. Поскольку, я сейчас изучаю DBExpress, буду приводить примеры по созданию транзакций в этой технологии. Насколько, я понял, здесь транзакции могут от одного SQLConnection отправляться только последовательно – это ограничение данной технологии.

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

Что такое TTransactionDesc?

Что за уровни изоляции такие?

Ранее я писал о них в посте про транзакции и MySQL… Но, в данном посте, позволю себе повториться…

Уровни изоляции транзакций

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

Read uncommitted (незафиксированное чтение) — наименее защищенный уровень транзакций. Этот уровень рекомендуется исопльзовать только в тех случаях, когда все транзакции работают в режиме чтения.

Read committed (фиксированное чтение) — исключается «грязное чтение», но другим транзакциям разрешено изменять заблокированные строки.

Repeatable read (повторяемое чтение) — накладывает блокировки на обрабатываемые транзакцией строки и не допускает их изменение другими транзакциями, но не запрещает добавление новых записей, что может привести к появлению строк-фантомов. По умолчанию стоит для всех транзакций.

Serializable (сериализуемость) — самый надежный уровень изоляции, полностью исключающий взаимное влияние транзакций.


Покажите пример использования транзакции?

This entry was posted in DBExpress, Delphi, Без рубрики. Bookmark the permalink.